From e5f1ed1af4227cd77f5b2f6e914c1e157f759ccd Mon Sep 17 00:00:00 2001 From: felsabbagh3 Date: Sat, 16 Mar 2019 19:38:47 -0400 Subject: [PATCH] code cleanup --- src/Makefile | 4 +- src/firmware/firmware.c | 212 ----- src/firmware/firmware.dump | 1166 ---------------------------- src/firmware/firmware.elf | Bin 10852 -> 0 bytes src/firmware/firmware.hex | 201 ----- src/firmware/firmware1.hex | 11 - src/firmware/hi.sh | 3 - src/firmware/linker.ld | 44 -- src/harptool.cpp | 278 +------ src/mem.cpp | 10 - src/obj.cpp | 748 ------------------ src/riscv_gpgpu/Makefile | 2 +- src/riscv_gpgpu/gpgpu_test.dump | 1286 +++++++++++++++---------------- src/riscv_gpgpu/gpgpu_test.elf | Bin 10540 -> 10540 bytes src/riscv_gpgpu/gpgpu_test.hex | 266 ++++--- src/scanner.lex | 142 ---- src/test/2thread.s | 36 - src/test/2warp_matadd.s | 82 -- src/test/Makefile | 42 - src/test/boot.s | 52 -- src/test/bubble.s | 56 -- src/test/diverge.s | 64 -- src/test/dotprod.s | 45 -- src/test/lfsr.s | 26 - src/test/lib.s | 130 ---- src/test/matadd.s | 66 -- src/test/matmul-mt.s | 147 ---- src/test/matmul.s | 101 --- src/test/sieve.s | 74 -- src/test/simple.s | 32 - src/unit_test/float_test.cpp | 53 -- src/unit_test/qsim_test.cpp | 25 - 32 files changed, 801 insertions(+), 4603 deletions(-) delete mode 100644 src/firmware/firmware.c delete mode 100644 src/firmware/firmware.dump delete mode 100755 src/firmware/firmware.elf delete mode 100644 src/firmware/firmware.hex delete mode 100644 src/firmware/firmware1.hex delete mode 100755 src/firmware/hi.sh delete mode 100644 src/firmware/linker.ld delete mode 100644 src/obj.cpp delete mode 100644 src/scanner.lex delete mode 100644 src/test/2thread.s delete mode 100644 src/test/2warp_matadd.s delete mode 100644 src/test/Makefile delete mode 100644 src/test/boot.s delete mode 100644 src/test/bubble.s delete mode 100644 src/test/diverge.s delete mode 100644 src/test/dotprod.s delete mode 100644 src/test/lfsr.s delete mode 100644 src/test/lib.s delete mode 100644 src/test/matadd.s delete mode 100644 src/test/matmul-mt.s delete mode 100644 src/test/matmul.s delete mode 100644 src/test/sieve.s delete mode 100644 src/test/simple.s delete mode 100644 src/unit_test/float_test.cpp delete mode 100644 src/unit_test/qsim_test.cpp diff --git a/src/Makefile b/src/Makefile index 2786ce06..6e859e38 100644 --- a/src/Makefile +++ b/src/Makefile @@ -5,7 +5,7 @@ CXXFLAGS ?= -std=c++11 -fPIC -O3 # -g -DUSE_DEBUG=3 -DPRINT_ACTIVE_THREADS LDLIBS ?= -pthread PREFIX ?= /usr/local -LIB_OBJS=args.o obj.o mem.o core.o instruction.o enc.o util.o +LIB_OBJS=args.o mem.o core.o instruction.o enc.o util.o all: harptool libharplib.so libharplib.a #libqsim-harp.so @@ -28,8 +28,6 @@ harptool.o : harptool.cpp include/types.h include/core.h include/enc.h \ include/archdef.h include/args.h include/help.h include/debug.h instruction.o : instruction.cpp include/instruction.h include/obj.h \ include/core.h include/debug.h include/asm-tokens.h -obj.o : obj.cpp include/types.h include/obj.h include/util.h \ - include/asm-tokens.h include/debug.h include/instruction.h util.o : util.cpp include/types.h include/util.h mem.o : mem.cpp include/types.h include/util.h include/mem.h include/debug.h \ include/core.h diff --git a/src/firmware/firmware.c b/src/firmware/firmware.c deleted file mode 100644 index 7ffcd4fa..00000000 --- a/src/firmware/firmware.c +++ /dev/null @@ -1,212 +0,0 @@ -/* - * PicoSoC - A simple example SoC using PicoRV32 - * - * Copyright (C) 2017 Clifford Wolf - * - * 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 -#include - -// #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; -} \ No newline at end of file diff --git a/src/firmware/firmware.dump b/src/firmware/firmware.dump deleted file mode 100644 index 9b777e26..00000000 --- a/src/firmware/firmware.dump +++ /dev/null @@ -1,1166 +0,0 @@ - -firmware.elf: file format elf32-littleriscv - - -Disassembly of section .text: - -80000000
: -80000000: fb010113 addi sp,sp,-80 -80000004: 04112623 sw ra,76(sp) -80000008: 04812423 sw s0,72(sp) -8000000c: 05010413 addi s0,sp,80 -80000010: fe0406a3 sb zero,-19(s0) -80000014: 810007b7 lui a5,0x81000 -80000018: 00078513 mv a0,a5 -8000001c: 25c000ef jal ra,80000278 -80000020: 00000013 nop -80000024: 810007b7 lui a5,0x81000 -80000028: 01078513 addi a0,a5,16 # 81000010 -8000002c: 29c000ef jal ra,800002c8 -80000030: 00050793 mv a5,a0 -80000034: fef407a3 sb a5,-17(s0) -80000038: fef44703 lbu a4,-17(s0) -8000003c: 00a00793 li a5,10 -80000040: fef712e3 bne a4,a5,80000024 -80000044: 810007b7 lui a5,0x81000 -80000048: 03078513 addi a0,a5,48 # 81000030 -8000004c: 22c000ef jal ra,80000278 -80000050: 810007b7 lui a5,0x81000 -80000054: 03878513 addi a0,a5,56 # 81000038 -80000058: 220000ef jal ra,80000278 -8000005c: 810007b7 lui a5,0x81000 -80000060: 0a478513 addi a0,a5,164 # 810000a4 -80000064: 214000ef jal ra,80000278 -80000068: 810007b7 lui a5,0x81000 -8000006c: 11078513 addi a0,a5,272 # 81000110 -80000070: 208000ef jal ra,80000278 -80000074: 810007b7 lui a5,0x81000 -80000078: 17c78513 addi a0,a5,380 # 8100017c -8000007c: 1fc000ef jal ra,80000278 -80000080: 810007b7 lui a5,0x81000 -80000084: 1e878513 addi a0,a5,488 # 810001e8 -80000088: 1f0000ef jal ra,80000278 -8000008c: 810007b7 lui a5,0x81000 -80000090: 25478513 addi a0,a5,596 # 81000254 -80000094: 1e4000ef jal ra,80000278 -80000098: 810007b7 lui a5,0x81000 -8000009c: 2c078513 addi a0,a5,704 # 810002c0 -800000a0: 1d8000ef jal ra,80000278 -800000a4: 810007b7 lui a5,0x81000 -800000a8: 32c78513 addi a0,a5,812 # 8100032c -800000ac: 1cc000ef jal ra,80000278 -800000b0: 810007b7 lui a5,0x81000 -800000b4: 39878513 addi a0,a5,920 # 81000398 -800000b8: 1c0000ef jal ra,80000278 -800000bc: 810007b7 lui a5,0x81000 -800000c0: 40478513 addi a0,a5,1028 # 81000404 -800000c4: 1b4000ef jal ra,80000278 -800000c8: 810007b7 lui a5,0x81000 -800000cc: 40478513 addi a0,a5,1028 # 81000404 -800000d0: 1a8000ef jal ra,80000278 -800000d4: 810007b7 lui a5,0x81000 -800000d8: 47078513 addi a0,a5,1136 # 81000470 -800000dc: 19c000ef jal ra,80000278 -800000e0: 810007b7 lui a5,0x81000 -800000e4: 4dc78513 addi a0,a5,1244 # 810004dc -800000e8: 190000ef jal ra,80000278 -800000ec: fb840793 addi a5,s0,-72 -800000f0: 00078593 mv a1,a5 -800000f4: 810007b7 lui a5,0x81000 -800000f8: 4e078513 addi a0,a5,1248 # 810004e0 -800000fc: 260000ef jal ra,8000035c -80000100: fb844783 lbu a5,-72(s0) -80000104: fef407a3 sb a5,-17(s0) -80000108: fef44703 lbu a4,-17(s0) -8000010c: 07900793 li a5,121 -80000110: 02f70463 beq a4,a5,80000138 -80000114: fef44703 lbu a4,-17(s0) -80000118: 06e00793 li a5,110 -8000011c: 00f71663 bne a4,a5,80000128 -80000120: 00000793 li a5,0 -80000124: 0f40006f j 80000218 -80000128: 810007b7 lui a5,0x81000 -8000012c: 51078513 addi a0,a5,1296 # 81000510 -80000130: 148000ef jal ra,80000278 -80000134: fb9ff06f j 800000ec -80000138: 00000013 nop -8000013c: 03500793 li a5,53 -80000140: fef40723 sb a5,-18(s0) -80000144: fb840793 addi a5,s0,-72 -80000148: 00078593 mv a1,a5 -8000014c: 810007b7 lui a5,0x81000 -80000150: 53478513 addi a0,a5,1332 # 81000534 -80000154: 208000ef jal ra,8000035c -80000158: fb844783 lbu a5,-72(s0) -8000015c: fef407a3 sb a5,-17(s0) -80000160: fef44703 lbu a4,-17(s0) -80000164: fee44783 lbu a5,-18(s0) -80000168: 00f77a63 bgeu a4,a5,8000017c -8000016c: 810007b7 lui a5,0x81000 -80000170: 55878513 addi a0,a5,1368 # 81000558 -80000174: 104000ef jal ra,80000278 -80000178: fcdff06f j 80000144 -8000017c: fef44703 lbu a4,-17(s0) -80000180: fee44783 lbu a5,-18(s0) -80000184: 00e7fa63 bgeu a5,a4,80000198 -80000188: 810007b7 lui a5,0x81000 -8000018c: 57478513 addi a0,a5,1396 # 81000574 -80000190: 0e8000ef jal ra,80000278 -80000194: fb1ff06f j 80000144 -80000198: 810007b7 lui a5,0x81000 -8000019c: 59078513 addi a0,a5,1424 # 81000590 -800001a0: 0d8000ef jal ra,80000278 -800001a4: 810007b7 lui a5,0x81000 -800001a8: 5e078513 addi a0,a5,1504 # 810005e0 -800001ac: 0cc000ef jal ra,80000278 -800001b0: 810007b7 lui a5,0x81000 -800001b4: 63078513 addi a0,a5,1584 # 81000630 -800001b8: 0c0000ef jal ra,80000278 -800001bc: 810007b7 lui a5,0x81000 -800001c0: 68078513 addi a0,a5,1664 # 81000680 -800001c4: 0b4000ef jal ra,80000278 -800001c8: 810007b7 lui a5,0x81000 -800001cc: 6d078513 addi a0,a5,1744 # 810006d0 -800001d0: 0a8000ef jal ra,80000278 -800001d4: 810007b7 lui a5,0x81000 -800001d8: 72078513 addi a0,a5,1824 # 81000720 -800001dc: 09c000ef jal ra,80000278 -800001e0: 810007b7 lui a5,0x81000 -800001e4: 77078513 addi a0,a5,1904 # 81000770 -800001e8: 090000ef jal ra,80000278 -800001ec: 810007b7 lui a5,0x81000 -800001f0: 7c078513 addi a0,a5,1984 # 810007c0 -800001f4: 084000ef jal ra,80000278 -800001f8: 810007b7 lui a5,0x81000 -800001fc: 4dc78513 addi a0,a5,1244 # 810004dc -80000200: 078000ef jal ra,80000278 -80000204: 00000013 nop -80000208: 810017b7 lui a5,0x81001 -8000020c: 81078513 addi a0,a5,-2032 # 81000810 -80000210: 068000ef jal ra,80000278 -80000214: 00000793 li a5,0 -80000218: 00078513 mv a0,a5 -8000021c: 04c12083 lw ra,76(sp) -80000220: 04812403 lw s0,72(sp) -80000224: 05010113 addi sp,sp,80 -80000228: 00008067 ret - -8000022c : -8000022c: fe010113 addi sp,sp,-32 -80000230: 00112e23 sw ra,28(sp) -80000234: 00812c23 sw s0,24(sp) -80000238: 02010413 addi s0,sp,32 -8000023c: 00050793 mv a5,a0 -80000240: fef407a3 sb a5,-17(s0) -80000244: fef44703 lbu a4,-17(s0) -80000248: 00a00793 li a5,10 -8000024c: 00f71663 bne a4,a5,80000258 -80000250: 00d00513 li a0,13 -80000254: fd9ff0ef jal ra,8000022c -80000258: ff0007b7 lui a5,0xff000 -8000025c: fef44703 lbu a4,-17(s0) -80000260: 00e7a023 sw a4,0(a5) # ff000000 -80000264: 00000013 nop -80000268: 01c12083 lw ra,28(sp) -8000026c: 01812403 lw s0,24(sp) -80000270: 02010113 addi sp,sp,32 -80000274: 00008067 ret - -80000278 : -80000278: fe010113 addi sp,sp,-32 -8000027c: 00112e23 sw ra,28(sp) -80000280: 00812c23 sw s0,24(sp) -80000284: 02010413 addi s0,sp,32 -80000288: fea42623 sw a0,-20(s0) -8000028c: 01c0006f j 800002a8 -80000290: fec42783 lw a5,-20(s0) -80000294: 00178713 addi a4,a5,1 -80000298: fee42623 sw a4,-20(s0) -8000029c: 0007c783 lbu a5,0(a5) -800002a0: 00078513 mv a0,a5 -800002a4: f89ff0ef jal ra,8000022c -800002a8: fec42783 lw a5,-20(s0) -800002ac: 0007c783 lbu a5,0(a5) -800002b0: fe0790e3 bnez a5,80000290 -800002b4: 00000013 nop -800002b8: 01c12083 lw ra,28(sp) -800002bc: 01812403 lw s0,24(sp) -800002c0: 02010113 addi sp,sp,32 -800002c4: 00008067 ret - -800002c8 : -800002c8: fd010113 addi sp,sp,-48 -800002cc: 02112623 sw ra,44(sp) -800002d0: 02812423 sw s0,40(sp) -800002d4: 03010413 addi s0,sp,48 -800002d8: fca42e23 sw a0,-36(s0) -800002dc: fff00793 li a5,-1 -800002e0: fef42623 sw a5,-20(s0) -800002e4: c00027f3 rdcycle a5 -800002e8: fef42423 sw a5,-24(s0) -800002ec: fe042223 sw zero,-28(s0) -800002f0: fdc42783 lw a5,-36(s0) -800002f4: 02078a63 beqz a5,80000328 -800002f8: fdc42503 lw a0,-36(s0) -800002fc: f7dff0ef jal ra,80000278 -80000300: 0280006f j 80000328 -80000304: c00027f3 rdcycle a5 -80000308: fef42023 sw a5,-32(s0) -8000030c: fe042703 lw a4,-32(s0) -80000310: fe842783 lw a5,-24(s0) -80000314: 40f707b3 sub a5,a4,a5 -80000318: fef42223 sw a5,-28(s0) -8000031c: ff0007b7 lui a5,0xff000 -80000320: 0007a783 lw a5,0(a5) # ff000000 -80000324: fef42623 sw a5,-20(s0) -80000328: fec42703 lw a4,-20(s0) -8000032c: fff00793 li a5,-1 -80000330: fcf70ae3 beq a4,a5,80000304 -80000334: 810007b7 lui a5,0x81000 -80000338: 4dc78513 addi a0,a5,1244 # 810004dc -8000033c: f3dff0ef jal ra,80000278 -80000340: fec42783 lw a5,-20(s0) -80000344: 0ff7f793 andi a5,a5,255 -80000348: 00078513 mv a0,a5 -8000034c: 02c12083 lw ra,44(sp) -80000350: 02812403 lw s0,40(sp) -80000354: 03010113 addi sp,sp,48 -80000358: 00008067 ret - -8000035c : -8000035c: fc010113 addi sp,sp,-64 -80000360: 02112e23 sw ra,60(sp) -80000364: 02812c23 sw s0,56(sp) -80000368: 04010413 addi s0,sp,64 -8000036c: fca42623 sw a0,-52(s0) -80000370: fcb42423 sw a1,-56(s0) -80000374: fff00793 li a5,-1 -80000378: fef42623 sw a5,-20(s0) -8000037c: c00027f3 rdcycle a5 -80000380: fef42223 sw a5,-28(s0) -80000384: fe042023 sw zero,-32(s0) -80000388: fcc42783 lw a5,-52(s0) -8000038c: 00078663 beqz a5,80000398 -80000390: fcc42503 lw a0,-52(s0) -80000394: ee5ff0ef jal ra,80000278 -80000398: fe042423 sw zero,-24(s0) -8000039c: 0580006f j 800003f4 -800003a0: c00027f3 rdcycle a5 -800003a4: fcf42e23 sw a5,-36(s0) -800003a8: fdc42703 lw a4,-36(s0) -800003ac: fe442783 lw a5,-28(s0) -800003b0: 40f707b3 sub a5,a4,a5 -800003b4: fef42023 sw a5,-32(s0) -800003b8: ff0007b7 lui a5,0xff000 -800003bc: 0007a783 lw a5,0(a5) # ff000000 -800003c0: fef42623 sw a5,-20(s0) -800003c4: fec42703 lw a4,-20(s0) -800003c8: fff00793 li a5,-1 -800003cc: 02f70463 beq a4,a5,800003f4 -800003d0: fe842783 lw a5,-24(s0) -800003d4: fc842703 lw a4,-56(s0) -800003d8: 00f707b3 add a5,a4,a5 -800003dc: fec42703 lw a4,-20(s0) -800003e0: 0ff77713 andi a4,a4,255 -800003e4: 00e78023 sb a4,0(a5) -800003e8: fe842783 lw a5,-24(s0) -800003ec: 00178793 addi a5,a5,1 -800003f0: fef42423 sw a5,-24(s0) -800003f4: fec42703 lw a4,-20(s0) -800003f8: 00a00793 li a5,10 -800003fc: faf712e3 bne a4,a5,800003a0 -80000400: 00000013 nop -80000404: 03c12083 lw ra,60(sp) -80000408: 03812403 lw s0,56(sp) -8000040c: 04010113 addi sp,sp,64 -80000410: 00008067 ret - -Disassembly of section .rodata: - -81000000 <.rodata>: -81000000: 2024 fld fs1,64(s0) -81000002: 4220 lw s0,64(a2) -81000004: 69746f6f jal t5,81046e9a -81000008: 676e flw fa4,216(sp) -8100000a: 2e2e fld ft8,200(sp) -8100000c: 000a c.slli zero,0x2 -8100000e: 0000 unimp -81000010: 2024 fld fs1,64(s0) -81000012: 5020 lw s0,96(s0) -81000014: 6572 flw fa0,28(sp) -81000016: 45207373 csrrci t1,0x452,0 -8100001a: 544e lw s0,240(sp) -8100001c: 5245 li tp,-15 -8100001e: 7420 flw fs0,104(s0) -81000020: 6f63206f j 81032716 -81000024: 746e flw fs0,248(sp) -81000026: 6e69 lui t3,0x1a -81000028: 6575 lui a0,0x1d -8100002a: 2e2e fld ft8,200(sp) -8100002c: 0020 addi s0,sp,8 -8100002e: 0000 unimp -81000030: 2024 fld fs1,64(s0) -81000032: 0a20 addi s0,sp,280 -81000034: 0000 unimp -81000036: 0000 unimp -81000038: 2020 fld fs0,64(s0) -8100003a: 5f5f 5f5f 5f5f 0x5f5f5f5f5f5f -81000040: 2020 fld fs0,64(s0) -81000042: 2020 fld fs0,64(s0) -81000044: 2020 fld fs0,64(s0) -81000046: 2020 fld fs0,64(s0) -81000048: 2020 fld fs0,64(s0) -8100004a: 5f20 lw s0,120(a4) -8100004c: 205f 2020 2020 0x20202020205f -81000052: 2020 fld fs0,64(s0) -81000054: 5f5f 2020 2020 0x202020205f5f -8100005a: 2020 fld fs0,64(s0) -8100005c: 2020 fld fs0,64(s0) -8100005e: 2020 fld fs0,64(s0) -81000060: 2020 fld fs0,64(s0) -81000062: 2020 fld fs0,64(s0) -81000064: 2020 fld fs0,64(s0) -81000066: 2020 fld fs0,64(s0) -81000068: 2020 fld fs0,64(s0) -8100006a: 2020 fld fs0,64(s0) -8100006c: 2020 fld fs0,64(s0) -8100006e: 2020 fld fs0,64(s0) -81000070: 5f5f 5f5f 5f5f 0x5f5f5f5f5f5f -81000076: 205f 5f20 5f5f 0x5f5f5f20205f -8100007c: 5f5f 205f 5f20 0x5f20205f5f5f -81000082: 5f5f 5f5f 205f 0x205f5f5f5f5f -81000088: 2020 fld fs0,64(s0) -8100008a: 5f5f 5f5f 5f5f 0x5f5f5f5f5f5f -81000090: 2020 fld fs0,64(s0) -81000092: 2020 fld fs0,64(s0) -81000094: 2020 fld fs0,64(s0) -81000096: 5f20 lw s0,120(a4) -81000098: 205f 2020 2020 0x20202020205f -8100009e: 5f5f 0a20 0000 0xa205f5f -810000a4: 2f20 fld fs0,88(a4) -810000a6: 2020 fld fs0,64(s0) -810000a8: 2020 fld fs0,64(s0) -810000aa: 2020 fld fs0,64(s0) -810000ac: 205c fld fa5,128(s0) -810000ae: 2020 fld fs0,64(s0) -810000b0: 2020 fld fs0,64(s0) -810000b2: 2020 fld fs0,64(s0) -810000b4: 2020 fld fs0,64(s0) -810000b6: 207c fld fa5,192(s0) -810000b8: 5c20 lw s0,120(s0) -810000ba: 2020 fld fs0,64(s0) -810000bc: 2020 fld fs0,64(s0) -810000be: 7c20 flw fs0,120(s0) -810000c0: 2020 fld fs0,64(s0) -810000c2: 205c fld fa5,128(s0) -810000c4: 2020 fld fs0,64(s0) -810000c6: 2020 fld fs0,64(s0) -810000c8: 2020 fld fs0,64(s0) -810000ca: 2020 fld fs0,64(s0) -810000cc: 2020 fld fs0,64(s0) -810000ce: 2020 fld fs0,64(s0) -810000d0: 2020 fld fs0,64(s0) -810000d2: 2020 fld fs0,64(s0) -810000d4: 2020 fld fs0,64(s0) -810000d6: 2020 fld fs0,64(s0) -810000d8: 2020 fld fs0,64(s0) -810000da: 7c20 flw fs0,120(s0) -810000dc: 2020 fld fs0,64(s0) -810000de: 2020 fld fs0,64(s0) -810000e0: 2020 fld fs0,64(s0) -810000e2: 5c20 lw s0,120(s0) -810000e4: 207c fld fa5,192(s0) -810000e6: 2020 fld fs0,64(s0) -810000e8: 2020 fld fs0,64(s0) -810000ea: 5c20 lw s0,120(s0) -810000ec: 2020202f amoxor.w zero,sp,(zero) -810000f0: 2020 fld fs0,64(s0) -810000f2: 5c20 lw s0,120(s0) -810000f4: 2f20 fld fs0,88(a4) -810000f6: 2020 fld fs0,64(s0) -810000f8: 2020 fld fs0,64(s0) -810000fa: 2020 fld fs0,64(s0) -810000fc: 205c fld fa5,128(s0) -810000fe: 2020 fld fs0,64(s0) -81000100: 2020 fld fs0,64(s0) -81000102: 207c fld fa5,192(s0) -81000104: 5c20 lw s0,120(s0) -81000106: 2020 fld fs0,64(s0) -81000108: 7c20 flw fs0,120(s0) -8100010a: 2020 fld fs0,64(s0) -8100010c: 0a5c addi a5,sp,276 -8100010e: 0000 unimp -81000110: 207c fld fa5,192(s0) -81000112: 2420 fld fs0,72(s0) -81000114: 2424 fld fs1,72(s0) -81000116: 2424 fld fs1,72(s0) -81000118: 5c24 lw s1,120(s0) -8100011a: 5f20 lw s0,120(a4) -8100011c: 5f5f 5f5f 205f 0x205f5f5f5f5f -81000122: 207c fld fa5,192(s0) -81000124: 2424 fld fs1,72(s0) -81000126: 5f5f 5f5f 2020 0x20205f5f5f5f -8100012c: 245c fld fa5,136(s0) -8100012e: 5f24 lw s1,120(a4) -81000130: 5f5f 5f5f 5f5f 0x5f5f5f5f5f5f -81000136: 2020 fld fs0,64(s0) -81000138: 5f5f 2020 2020 0x202020205f5f -8100013e: 5f5f 2020 2020 0x202020205f5f -81000144: 2020 fld fs0,64(s0) -81000146: 7c20 flw fs0,120(s0) -81000148: 2420 fld fs0,72(s0) -8100014a: 2424 fld fs1,72(s0) -8100014c: 2424 fld fs1,72(s0) -8100014e: 2424 fld fs1,72(s0) -81000150: 5c5c lw a5,60(s0) -81000152: 2424 fld fs1,72(s0) -81000154: 2424 fld fs1,72(s0) -81000156: 7c24 flw fs1,120(s0) -81000158: 2020 fld fs0,64(s0) -8100015a: 2424 fld fs1,72(s0) -8100015c: 2424 fld fs1,72(s0) -8100015e: 2424 fld fs1,72(s0) -81000160: 207c fld fa5,192(s0) -81000162: 2420 fld fs0,72(s0) -81000164: 2424 fld fs1,72(s0) -81000166: 2424 fld fs1,72(s0) -81000168: 5c24 lw s1,120(s0) -8100016a: 2020 fld fs0,64(s0) -8100016c: 2020 fld fs0,64(s0) -8100016e: 207c fld fa5,192(s0) -81000170: 2424 fld fs1,72(s0) -81000172: 2020 fld fs0,64(s0) -81000174: 7c20 flw fs0,120(s0) -81000176: 2420 fld fs0,72(s0) -81000178: 0a24 addi s1,sp,280 -8100017a: 0000 unimp -8100017c: 207c fld fa5,192(s0) -8100017e: 2424 fld fs1,72(s0) -81000180: 5f5f 5c5f 2424 0x24245c5f5f5f -81000186: 2020202f amoxor.w zero,sp,(zero) -8100018a: 2020 fld fs0,64(s0) -8100018c: 5c20 lw s0,120(s0) -8100018e: 207c fld fa5,192(s0) -81000190: 2424 fld fs1,72(s0) -81000192: 2020 fld fs0,64(s0) -81000194: 2020 fld fs0,64(s0) -81000196: 7c5c flw fa5,60(s0) -81000198: 2020 fld fs0,64(s0) -8100019a: 207c fld fa5,192(s0) -8100019c: 2020 fld fs0,64(s0) -8100019e: 2020 fld fs0,64(s0) -810001a0: 2020 fld fs0,64(s0) -810001a2: 7c5c flw fa5,60(s0) -810001a4: 2020 fld fs0,64(s0) -810001a6: 205c fld fa5,128(s0) -810001a8: 2f20 fld fs0,88(a4) -810001aa: 2020 fld fs0,64(s0) -810001ac: 205c fld fa5,128(s0) -810001ae: 2020 fld fs0,64(s0) -810001b0: 2020 fld fs0,64(s0) -810001b2: 7c20 flw fs0,120(s0) -810001b4: 2420 fld fs0,72(s0) -810001b6: 5f24 lw s1,120(a4) -810001b8: 7c5f 2420 2024 0x202424207c5f -810001be: 207c fld fa5,192(s0) -810001c0: 2424 fld fs1,72(s0) -810001c2: 7c20 flw fs0,120(s0) -810001c4: 2420 fld fs0,72(s0) -810001c6: 5f24 lw s1,120(a4) -810001c8: 5f5f 245c 207c 0x207c245c5f5f -810001ce: 2424 fld fs1,72(s0) -810001d0: 2020 fld fs0,64(s0) -810001d2: 5c20 lw s0,120(s0) -810001d4: 5f24 lw s1,120(a4) -810001d6: 5f5f 5f5f 207c 0x207c5f5f5f5f -810001dc: 2424 fld fs1,72(s0) -810001de: 2020 fld fs0,64(s0) -810001e0: 7c20 flw fs0,120(s0) -810001e2: 2420 fld fs0,72(s0) -810001e4: 0a24 addi s1,sp,280 -810001e6: 0000 unimp -810001e8: 5c20 lw s0,120(s0) -810001ea: 2424 fld fs1,72(s0) -810001ec: 2020 fld fs0,64(s0) -810001ee: 2020 fld fs0,64(s0) -810001f0: 7c5c flw fa5,60(s0) -810001f2: 2020 fld fs0,64(s0) -810001f4: 2424 fld fs1,72(s0) -810001f6: 2424 fld fs1,72(s0) -810001f8: 2424 fld fs1,72(s0) -810001fa: 207c fld fa5,192(s0) -810001fc: 2424 fld fs1,72(s0) -810001fe: 2424 fld fs1,72(s0) -81000200: 2424 fld fs1,72(s0) -81000202: 7c24 flw fs1,120(s0) -81000204: 2420 fld fs0,72(s0) -81000206: 207c fld fa5,192(s0) -81000208: 2424 fld fs1,72(s0) -8100020a: 2424 fld fs1,72(s0) -8100020c: 2424 fld fs1,72(s0) -8100020e: 5c24 lw s1,120(s0) -81000210: 245c fld fa5,136(s0) -81000212: 5c24 lw s1,120(s0) -81000214: 2420202f amoxor.w.aq zero,sp,(zero) -81000218: 2024 fld fs1,64(s0) -8100021a: 2020 fld fs0,64(s0) -8100021c: 2020 fld fs0,64(s0) -8100021e: 7c20 flw fs0,120(s0) -81000220: 2420 fld fs0,72(s0) -81000222: 2024 fld fs1,64(s0) -81000224: 2020 fld fs0,64(s0) -81000226: 2420 fld fs0,72(s0) -81000228: 2024 fld fs1,64(s0) -8100022a: 207c fld fa5,192(s0) -8100022c: 2424 fld fs1,72(s0) -8100022e: 2020 fld fs0,64(s0) -81000230: 245c fld fa5,136(s0) -81000232: 2024 fld fs1,64(s0) -81000234: 2020 fld fs0,64(s0) -81000236: 5c20 lw s0,120(s0) -81000238: 207c fld fa5,192(s0) -8100023a: 2424 fld fs1,72(s0) -8100023c: 2020 fld fs0,64(s0) -8100023e: 2020 fld fs0,64(s0) -81000240: 207c fld fa5,192(s0) -81000242: 2020 fld fs0,64(s0) -81000244: 2020 fld fs0,64(s0) -81000246: 5c20 lw s0,120(s0) -81000248: 2424 fld fs1,72(s0) -8100024a: 205c fld fa5,128(s0) -8100024c: 2420202f amoxor.w.aq zero,sp,(zero) -81000250: 0a24 addi s1,sp,280 -81000252: 0000 unimp -81000254: 5f20 lw s0,120(a4) -81000256: 245c fld fa5,136(s0) -81000258: 2424 fld fs1,72(s0) -8100025a: 2424 fld fs1,72(s0) -8100025c: 7c24 flw fs1,120(s0) -8100025e: 2420 fld fs0,72(s0) -81000260: 2024 fld fs1,64(s0) -81000262: 7c20 flw fs0,120(s0) -81000264: 2420 fld fs0,72(s0) -81000266: 207c fld fa5,192(s0) -81000268: 2424 fld fs1,72(s0) -8100026a: 2020 fld fs0,64(s0) -8100026c: 207c fld fa5,192(s0) -8100026e: 7c24 flw fs1,120(s0) -81000270: 2420 fld fs0,72(s0) -81000272: 207c fld fa5,192(s0) -81000274: 2424 fld fs1,72(s0) -81000276: 2020 fld fs0,64(s0) -81000278: 207c fld fa5,192(s0) -8100027a: 2424 fld fs1,72(s0) -8100027c: 3e20 fld fs0,120(a2) -8100027e: 2424 fld fs1,72(s0) -81000280: 2020 fld fs0,64(s0) -81000282: 2424 fld fs1,72(s0) -81000284: 2020 fld fs0,64(s0) -81000286: 2020 fld fs0,64(s0) -81000288: 2020 fld fs0,64(s0) -8100028a: 7c20 flw fs0,120(s0) -8100028c: 2420 fld fs0,72(s0) -8100028e: 2424 fld fs1,72(s0) -81000290: 2424 fld fs1,72(s0) -81000292: 2424 fld fs1,72(s0) -81000294: 205c fld fa5,128(s0) -81000296: 207c fld fa5,192(s0) -81000298: 2424 fld fs1,72(s0) -8100029a: 2020 fld fs0,64(s0) -8100029c: 5c5f 2424 2424 0x242424245c5f -810002a2: 2424 fld fs1,72(s0) -810002a4: 207c fld fa5,192(s0) -810002a6: 2424 fld fs1,72(s0) -810002a8: 2020 fld fs0,64(s0) -810002aa: 5f20 lw s0,120(a4) -810002ac: 5c5f 2424 2424 0x242424245c5f -810002b2: 2424 fld fs1,72(s0) -810002b4: 245c fld fa5,136(s0) -810002b6: 5c24 lw s1,120(s0) -810002b8: 2020 fld fs0,64(s0) -810002ba: 2424 fld fs1,72(s0) -810002bc: 0a20 addi s0,sp,280 -810002be: 0000 unimp -810002c0: 207c fld fa5,192(s0) -810002c2: 5c20 lw s0,120(s0) -810002c4: 5f5f 207c 7c24 0x7c24207c5f5f -810002ca: 2420 fld fs0,72(s0) -810002cc: 5f24 lw s1,120(a4) -810002ce: 2f5f 2420 207c 0x207c24202f5f -810002d4: 2424 fld fs1,72(s0) -810002d6: 2020 fld fs0,64(s0) -810002d8: 207c fld fa5,192(s0) -810002da: 7c24 flw fs1,120(s0) -810002dc: 2420 fld fs0,72(s0) -810002de: 207c fld fa5,192(s0) -810002e0: 2424 fld fs1,72(s0) -810002e2: 2020 fld fs0,64(s0) -810002e4: 207c fld fa5,192(s0) -810002e6: 2424 fld fs1,72(s0) -810002e8: 2420202f amoxor.w.aq zero,sp,(zero) -810002ec: 2424 fld fs1,72(s0) -810002ee: 5c24 lw s1,120(s0) -810002f0: 2020 fld fs0,64(s0) -810002f2: 2020 fld fs0,64(s0) -810002f4: 2020 fld fs0,64(s0) -810002f6: 7c20 flw fs0,120(s0) -810002f8: 2420 fld fs0,72(s0) -810002fa: 2024 fld fs1,64(s0) -810002fc: 7c20 flw fs0,120(s0) -810002fe: 2420 fld fs0,72(s0) -81000300: 5f24 lw s1,120(a4) -81000302: 207c fld fa5,192(s0) -81000304: 2424 fld fs1,72(s0) -81000306: 7c5f 2020 5f5c 0x5f5c20207c5f -8100030c: 7c5f 2420 207c 0x207c24207c5f -81000312: 2424 fld fs1,72(s0) -81000314: 5f5f 202f 5c20 0x5c20202f5f5f -8100031a: 2020 fld fs0,64(s0) -8100031c: 2020 fld fs0,64(s0) -8100031e: 2020 fld fs0,64(s0) -81000320: 5c20 lw s0,120(s0) -81000322: 2424 fld fs1,72(s0) -81000324: 2420 fld fs0,72(s0) -81000326: 2024 fld fs1,64(s0) -81000328: 0a20 addi s0,sp,280 -8100032a: 0000 unimp -8100032c: 5c20 lw s0,120(s0) -8100032e: 2424 fld fs1,72(s0) -81000330: 2020 fld fs0,64(s0) -81000332: 2020 fld fs0,64(s0) -81000334: 7c24 flw fs1,120(s0) -81000336: 2420 fld fs0,72(s0) -81000338: 2024 fld fs1,64(s0) -8100033a: 2020 fld fs0,64(s0) -8100033c: 2420 fld fs0,72(s0) -8100033e: 207c fld fa5,192(s0) -81000340: 2424 fld fs1,72(s0) -81000342: 2020 fld fs0,64(s0) -81000344: 207c fld fa5,192(s0) -81000346: 7c24 flw fs1,120(s0) -81000348: 2420 fld fs0,72(s0) -8100034a: 207c fld fa5,192(s0) -8100034c: 2424 fld fs1,72(s0) -8100034e: 2020 fld fs0,64(s0) -81000350: 207c fld fa5,192(s0) -81000352: 7c24 flw fs1,120(s0) -81000354: 2020 fld fs0,64(s0) -81000356: 2424 fld fs1,72(s0) -81000358: 5c20 lw s0,120(s0) -8100035a: 2424 fld fs1,72(s0) -8100035c: 205c fld fa5,128(s0) -8100035e: 2020 fld fs0,64(s0) -81000360: 2020 fld fs0,64(s0) -81000362: 7c20 flw fs0,120(s0) -81000364: 2420 fld fs0,72(s0) -81000366: 2024 fld fs1,64(s0) -81000368: 7c20 flw fs0,120(s0) -8100036a: 2420 fld fs0,72(s0) -8100036c: 207c fld fa5,192(s0) -8100036e: 2020 fld fs0,64(s0) -81000370: 2424 fld fs1,72(s0) -81000372: 5c20 lw s0,120(s0) -81000374: 245c fld fa5,136(s0) -81000376: 2024 fld fs1,64(s0) -81000378: 2020 fld fs0,64(s0) -8100037a: 2420 fld fs0,72(s0) -8100037c: 5c24 lw s1,120(s0) -8100037e: 2424 fld fs1,72(s0) -81000380: 2020 fld fs0,64(s0) -81000382: 2020 fld fs0,64(s0) -81000384: 2424 fld fs1,72(s0) -81000386: 2020 fld fs0,64(s0) -81000388: 2020 fld fs0,64(s0) -8100038a: 2020 fld fs0,64(s0) -8100038c: 2020 fld fs0,64(s0) -8100038e: 245c fld fa5,136(s0) -81000390: 2424 fld fs1,72(s0) -81000392: 2020 fld fs0,64(s0) -81000394: 0a20 addi s0,sp,280 -81000396: 0000 unimp -81000398: 2020 fld fs0,64(s0) -8100039a: 245c fld fa5,136(s0) -8100039c: 2424 fld fs1,72(s0) -8100039e: 2424 fld fs1,72(s0) -810003a0: 7c24 flw fs1,120(s0) -810003a2: 2420 fld fs0,72(s0) -810003a4: 2424 fld fs1,72(s0) -810003a6: 2424 fld fs1,72(s0) -810003a8: 2424 fld fs1,72(s0) -810003aa: 5c20 lw s0,120(s0) -810003ac: 2424 fld fs1,72(s0) -810003ae: 2020 fld fs0,64(s0) -810003b0: 5c20 lw s0,120(s0) -810003b2: 2424 fld fs1,72(s0) -810003b4: 245c fld fa5,136(s0) -810003b6: 5c24 lw s1,120(s0) -810003b8: 2424 fld fs1,72(s0) -810003ba: 2020 fld fs0,64(s0) -810003bc: 5c20 lw s0,120(s0) -810003be: 2424 fld fs1,72(s0) -810003c0: 245c fld fa5,136(s0) -810003c2: 2024 fld fs1,64(s0) -810003c4: 2020 fld fs0,64(s0) -810003c6: 245c fld fa5,136(s0) -810003c8: 2024 fld fs1,64(s0) -810003ca: 2020 fld fs0,64(s0) -810003cc: 2020 fld fs0,64(s0) -810003ce: 2020 fld fs0,64(s0) -810003d0: 245c fld fa5,136(s0) -810003d2: 2024 fld fs1,64(s0) -810003d4: 2020 fld fs0,64(s0) -810003d6: 245c fld fa5,136(s0) -810003d8: 5c24 lw s1,120(s0) -810003da: 2424 fld fs1,72(s0) -810003dc: 2424 fld fs1,72(s0) -810003de: 2424 fld fs1,72(s0) -810003e0: 5c20 lw s0,120(s0) -810003e2: 2424 fld fs1,72(s0) -810003e4: 2424 fld fs1,72(s0) -810003e6: 2424 fld fs1,72(s0) -810003e8: 2020 fld fs0,64(s0) -810003ea: 245c fld fa5,136(s0) -810003ec: 2424 fld fs1,72(s0) -810003ee: 2424 fld fs1,72(s0) -810003f0: 2024 fld fs1,64(s0) -810003f2: 2020 fld fs0,64(s0) -810003f4: 2020 fld fs0,64(s0) -810003f6: 2020 fld fs0,64(s0) -810003f8: 2020 fld fs0,64(s0) -810003fa: 5c20 lw s0,120(s0) -810003fc: 2024 fld fs1,64(s0) -810003fe: 2020 fld fs0,64(s0) -81000400: 0a20 addi s0,sp,280 -81000402: 0000 unimp -81000404: 2020 fld fs0,64(s0) -81000406: 2020 fld fs0,64(s0) -81000408: 2020 fld fs0,64(s0) -8100040a: 2020 fld fs0,64(s0) -8100040c: 7c20 flw fs0,120(s0) -8100040e: 2420 fld fs0,72(s0) -81000410: 2024 fld fs1,64(s0) -81000412: 2020 fld fs0,64(s0) -81000414: 2020 fld fs0,64(s0) -81000416: 2020 fld fs0,64(s0) -81000418: 2020 fld fs0,64(s0) -8100041a: 2020 fld fs0,64(s0) -8100041c: 2020 fld fs0,64(s0) -8100041e: 2020 fld fs0,64(s0) -81000420: 2020 fld fs0,64(s0) -81000422: 2020 fld fs0,64(s0) -81000424: 2020 fld fs0,64(s0) -81000426: 2020 fld fs0,64(s0) -81000428: 2020 fld fs0,64(s0) -8100042a: 2020 fld fs0,64(s0) -8100042c: 2020 fld fs0,64(s0) -8100042e: 2020 fld fs0,64(s0) -81000430: 2020 fld fs0,64(s0) -81000432: 2020 fld fs0,64(s0) -81000434: 2020 fld fs0,64(s0) -81000436: 2020 fld fs0,64(s0) -81000438: 2020 fld fs0,64(s0) -8100043a: 2020 fld fs0,64(s0) -8100043c: 2020 fld fs0,64(s0) -8100043e: 2020 fld fs0,64(s0) -81000440: 2020 fld fs0,64(s0) -81000442: 2020 fld fs0,64(s0) -81000444: 2020 fld fs0,64(s0) -81000446: 2020 fld fs0,64(s0) -81000448: 2020 fld fs0,64(s0) -8100044a: 2020 fld fs0,64(s0) -8100044c: 2020 fld fs0,64(s0) -8100044e: 2020 fld fs0,64(s0) -81000450: 2020 fld fs0,64(s0) -81000452: 2020 fld fs0,64(s0) -81000454: 2020 fld fs0,64(s0) -81000456: 2020 fld fs0,64(s0) -81000458: 2020 fld fs0,64(s0) -8100045a: 2020 fld fs0,64(s0) -8100045c: 2020 fld fs0,64(s0) -8100045e: 2020 fld fs0,64(s0) -81000460: 2020 fld fs0,64(s0) -81000462: 2020 fld fs0,64(s0) -81000464: 2020 fld fs0,64(s0) -81000466: 2020 fld fs0,64(s0) -81000468: 2020 fld fs0,64(s0) -8100046a: 2020 fld fs0,64(s0) -8100046c: 0a20 addi s0,sp,280 -8100046e: 0000 unimp -81000470: 2020 fld fs0,64(s0) -81000472: 2020 fld fs0,64(s0) -81000474: 2020 fld fs0,64(s0) -81000476: 2020 fld fs0,64(s0) -81000478: 2020 fld fs0,64(s0) -8100047a: 245c fld fa5,136(s0) -8100047c: 2024 fld fs1,64(s0) -8100047e: 2020 fld fs0,64(s0) -81000480: 2020 fld fs0,64(s0) -81000482: 2020 fld fs0,64(s0) -81000484: 2020 fld fs0,64(s0) -81000486: 2020 fld fs0,64(s0) -81000488: 2020 fld fs0,64(s0) -8100048a: 2020 fld fs0,64(s0) -8100048c: 2020 fld fs0,64(s0) -8100048e: 2020 fld fs0,64(s0) -81000490: 2020 fld fs0,64(s0) -81000492: 2020 fld fs0,64(s0) -81000494: 2020 fld fs0,64(s0) -81000496: 2020 fld fs0,64(s0) -81000498: 2020 fld fs0,64(s0) -8100049a: 2020 fld fs0,64(s0) -8100049c: 2020 fld fs0,64(s0) -8100049e: 2020 fld fs0,64(s0) -810004a0: 2020 fld fs0,64(s0) -810004a2: 2020 fld fs0,64(s0) -810004a4: 2020 fld fs0,64(s0) -810004a6: 2020 fld fs0,64(s0) -810004a8: 2020 fld fs0,64(s0) -810004aa: 2020 fld fs0,64(s0) -810004ac: 2020 fld fs0,64(s0) -810004ae: 2020 fld fs0,64(s0) -810004b0: 2020 fld fs0,64(s0) -810004b2: 2020 fld fs0,64(s0) -810004b4: 2020 fld fs0,64(s0) -810004b6: 2020 fld fs0,64(s0) -810004b8: 2020 fld fs0,64(s0) -810004ba: 2020 fld fs0,64(s0) -810004bc: 2020 fld fs0,64(s0) -810004be: 2020 fld fs0,64(s0) -810004c0: 2020 fld fs0,64(s0) -810004c2: 2020 fld fs0,64(s0) -810004c4: 2020 fld fs0,64(s0) -810004c6: 2020 fld fs0,64(s0) -810004c8: 2020 fld fs0,64(s0) -810004ca: 2020 fld fs0,64(s0) -810004cc: 2020 fld fs0,64(s0) -810004ce: 2020 fld fs0,64(s0) -810004d0: 2020 fld fs0,64(s0) -810004d2: 2020 fld fs0,64(s0) -810004d4: 2020 fld fs0,64(s0) -810004d6: 2020 fld fs0,64(s0) -810004d8: 0a20 addi s0,sp,280 -810004da: 0000 unimp -810004dc: 000a c.slli zero,0x2 -810004de: 0000 unimp -810004e0: 2024 fld fs1,64(s0) -810004e2: 4420 lw s0,72(s0) -810004e4: 6f79206f j 810933da -810004e8: 2075 jal 81000594 -810004ea: 746e6177 0x746e6177 -810004ee: 7420 flw fs0,104(s0) -810004f0: 6c70206f j 810033b6 -810004f4: 7961 lui s2,0xffff8 -810004f6: 6120 flw fs0,64(a0) -810004f8: 6720 flw fs0,72(a4) -810004fa: 6575 lui a0,0x1d -810004fc: 6e697373 csrrci t1,0x6e6,18 -81000500: 61672067 0x61672067 -81000504: 656d lui a0,0x1b -81000506: 795b203f 205d6e2f 0x205d6e2f795b203f -8100050e: 0000 unimp -81000510: 240a fld fs0,128(sp) -81000512: 2020 fld fs0,64(s0) -81000514: 6e6f7257 0x6e6f7257 -81000518: 6e692067 0x6e692067 -8100051c: 7570 flw fa2,108(a0) -8100051e: 2c74 fld fa3,216(s0) -81000520: 7020 flw fs0,96(s0) -81000522: 656c flw fa1,76(a0) -81000524: 7361 lui t1,0xffff8 -81000526: 2065 jal 810005ce -81000528: 7274 flw fa3,100(a2) -8100052a: 2079 jal 810005b8 -8100052c: 6761 lui a4,0x18 -8100052e: 6961 lui s2,0x18 -81000530: 0a6e slli s4,s4,0x1b -81000532: 0000 unimp -81000534: 203e fld ft0,456(sp) -81000536: 4720 lw s0,72(a4) -81000538: 6575 lui a0,0x1d -8100053a: 61207373 csrrci t1,0x612,0 -8100053e: 6e20 flw fs0,88(a2) -81000540: 6d75 lui s10,0x1d -81000542: 6562 flw fa0,24(sp) -81000544: 2072 fld ft0,280(sp) -81000546: 6562 flw fa0,24(sp) -81000548: 7774 flw fa3,108(a4) -8100054a: 6565 lui a0,0x19 -8100054c: 206e fld ft0,216(sp) -8100054e: 2030 fld fa2,64(s0) -81000550: 6e61 lui t3,0x18 -81000552: 2064 fld fs1,192(s0) -81000554: 3a39 jal 80fffe72 -81000556: 0020 addi s0,sp,8 -81000558: 203e fld ft0,456(sp) -8100055a: 5420 lw s0,104(s0) -8100055c: 6568 flw fa0,76(a0) -8100055e: 6e20 flw fs0,88(a2) -81000560: 6d75 lui s10,0x1d -81000562: 6562 flw fa0,24(sp) -81000564: 2072 fld ft0,280(sp) -81000566: 7369 lui t1,0xffffa -81000568: 6c20 flw fs0,88(s0) -8100056a: 7261 lui tp,0xffff8 -8100056c: 0a726567 0xa726567 -81000570: 0000 unimp -81000572: 0000 unimp -81000574: 203e fld ft0,456(sp) -81000576: 5420 lw s0,104(s0) -81000578: 6568 flw fa0,76(a0) -8100057a: 6e20 flw fs0,88(a2) -8100057c: 6d75 lui s10,0x1d -8100057e: 6562 flw fa0,24(sp) -81000580: 2072 fld ft0,280(sp) -81000582: 7369 lui t1,0xffffa -81000584: 7320 flw fs0,96(a4) -81000586: 616d addi sp,sp,240 -81000588: 6c6c flw fa1,92(s0) -8100058a: 7265 lui tp,0xffff9 -8100058c: 000a c.slli zero,0x2 -8100058e: 0000 unimp -81000590: 2020 fld fs0,64(s0) -81000592: 2020 fld fs0,64(s0) -81000594: 2020 fld fs0,64(s0) -81000596: 2020 fld fs0,64(s0) -81000598: 2020 fld fs0,64(s0) -8100059a: 2020 fld fs0,64(s0) -8100059c: 2020 fld fs0,64(s0) -8100059e: 2020 fld fs0,64(s0) -810005a0: 2020 fld fs0,64(s0) -810005a2: 2020 fld fs0,64(s0) -810005a4: 2020 fld fs0,64(s0) -810005a6: 2020 fld fs0,64(s0) -810005a8: 2020 fld fs0,64(s0) -810005aa: 2020 fld fs0,64(s0) -810005ac: 2020 fld fs0,64(s0) -810005ae: 2020 fld fs0,64(s0) -810005b0: 2020 fld fs0,64(s0) -810005b2: 205f 2020 2020 0x20202020205f -810005b8: 2020 fld fs0,64(s0) -810005ba: 2020 fld fs0,64(s0) -810005bc: 205f 2020 2020 0x20202020205f -810005c2: 2020 fld fs0,64(s0) -810005c4: 205f 2020 205f 0x205f2020205f -810005ca: 2020 fld fs0,64(s0) -810005cc: 2020 fld fs0,64(s0) -810005ce: 2020 fld fs0,64(s0) -810005d0: 2020 fld fs0,64(s0) -810005d2: 2020 fld fs0,64(s0) -810005d4: 2020 fld fs0,64(s0) -810005d6: 2020 fld fs0,64(s0) -810005d8: 2020 fld fs0,64(s0) -810005da: 205f 205f 000a 0xa205f205f -810005e0: 2020 fld fs0,64(s0) -810005e2: 2020 fld fs0,64(s0) -810005e4: 2020 fld fs0,64(s0) -810005e6: 2020 fld fs0,64(s0) -810005e8: 2020 fld fs0,64(s0) -810005ea: 2020 fld fs0,64(s0) -810005ec: 2020 fld fs0,64(s0) -810005ee: 2020 fld fs0,64(s0) -810005f0: 2020 fld fs0,64(s0) -810005f2: 2020 fld fs0,64(s0) -810005f4: 2020 fld fs0,64(s0) -810005f6: 2020 fld fs0,64(s0) -810005f8: 2020 fld fs0,64(s0) -810005fa: 2020 fld fs0,64(s0) -810005fc: 2020 fld fs0,64(s0) -810005fe: 2020 fld fs0,64(s0) -81000600: 7c20 flw fs0,120(s0) -81000602: 7c20 flw fs0,120(s0) -81000604: 2020 fld fs0,64(s0) -81000606: 2020 fld fs0,64(s0) -81000608: 2020 fld fs0,64(s0) -8100060a: 7c20 flw fs0,120(s0) -8100060c: 7c20 flw fs0,120(s0) -8100060e: 2020 fld fs0,64(s0) -81000610: 2020 fld fs0,64(s0) -81000612: 7c20 flw fs0,120(s0) -81000614: 7c20 flw fs0,120(s0) -81000616: 2820 fld fs0,80(s0) -81000618: 295f 2020 2020 0x20202020295f -8100061e: 2020 fld fs0,64(s0) -81000620: 2020 fld fs0,64(s0) -81000622: 2020 fld fs0,64(s0) -81000624: 2020 fld fs0,64(s0) -81000626: 2020 fld fs0,64(s0) -81000628: 7c20 flw fs0,120(s0) -8100062a: 7c20 flw fs0,120(s0) -8100062c: 7c20 flw fs0,120(s0) -8100062e: 000a c.slli zero,0x2 -81000630: 2020 fld fs0,64(s0) -81000632: 5f20 lw s0,120(a4) -81000634: 5f5f 5f20 5f5f 0x5f5f5f205f5f -8100063a: 2020 fld fs0,64(s0) -8100063c: 205f 5f5f 2020 0x20205f5f205f -81000642: 5f20 lw s0,120(a4) -81000644: 205f 205f 205f 0x205f205f205f -8100064a: 5f5f 5f20 205f 0x205f5f205f5f -81000650: 7c5f 7c20 205f 0x205f7c207c5f -81000656: 205f 2020 7c5f 0x7c5f2020205f -8100065c: 7c20 flw fs0,120(s0) -8100065e: 5f20 lw s0,120(a4) -81000660: 205f 7c5f 7c20 0x7c207c5f205f -81000666: 205f 205f 5f20 0x5f20205f205f -8100066c: 5f5f 2020 205f 0x205f20205f5f -81000672: 5f5f 2020 5f5f 0x5f5f20205f5f -81000678: 7c5f 7c20 7c20 0x7c207c207c5f -8100067e: 000a c.slli zero,0x2 -81000680: 2020 fld fs0,64(s0) -81000682: 5f5f202f 0x5f5f202f -81000686: 205f202f amoxor.w zero,t0,(t5) -8100068a: 7c5c flw fa5,60(s0) -8100068c: 2720 fld fs0,72(a4) -8100068e: 205f 205c 202f 0x202f205c205f -81000694: 605f 7c20 2720 0x27207c20605f -8100069a: 5f5f 202f 605f 0x605f202f5f5f -810006a0: 7c20 flw fs0,120(s0) -810006a2: 5f20 lw s0,120(a4) -810006a4: 7c5f 7c20 7c20 0x7c207c207c5f -810006aa: 7c20 flw fs0,120(s0) -810006ac: 7c20 flw fs0,120(s0) -810006ae: 605f202f amoand.w zero,t0,(t5) -810006b2: 7c20 flw fs0,120(s0) -810006b4: 5f20 lw s0,120(a4) -810006b6: 7c5f 7c20 202f 0x202f7c207c5f -810006bc: 205f 7c5c 2720 0x27207c5c205f -810006c2: 205f 2f5c 5f20 0x5f202f5c205f -810006c8: 7c5f 7c20 7c20 0x7c207c207c5f -810006ce: 000a c.slli zero,0x2 -810006d0: 7c20 flw fs0,120(s0) -810006d2: 2820 fld fs0,80(s0) -810006d4: 7c5f 2820 295f 0x295f28207c5f -810006da: 7c20 flw fs0,120(s0) -810006dc: 7c20 flw fs0,120(s0) -810006de: 7c20 flw fs0,120(s0) -810006e0: 7c20 flw fs0,120(s0) -810006e2: 2820 fld fs0,80(s0) -810006e4: 7c5f 7c20 7c20 0x7c207c207c5f -810006ea: 7c20 flw fs0,120(s0) -810006ec: 2820 fld fs0,80(s0) -810006ee: 7c5f 7c20 7c20 0x7c207c207c5f -810006f4: 7c5f 7c20 7c5f 0x7c5f7c207c5f -810006fa: 7c20 flw fs0,120(s0) -810006fc: 7c20 flw fs0,120(s0) -810006fe: 2820 fld fs0,80(s0) -81000700: 7c5f 7c20 7c20 0x7c207c207c5f -81000706: 7c5f 7c20 2820 0x28207c207c5f -8100070c: 295f 7c20 7c20 0x7c207c20295f -81000712: 7c20 flw fs0,120(s0) -81000714: 5c20 lw s0,120(s0) -81000716: 5f5f 5c20 7c5f 0x7c5f5c205f5f -8100071c: 7c5f 000a 2020 0x2020000a7c5f -81000722: 5f5c lw a5,60(a4) -81000724: 5f5f 5f5c 5f5f 0x5f5f5f5c5f5f -8100072a: 7c5f7c2f 0x7c5f7c2f -8100072e: 7c20 flw fs0,120(s0) -81000730: 7c5f 5f5c 2c5f 0x2c5f5f5c7c5f -81000736: 7c20 flw fs0,120(s0) -81000738: 7c5f 2020 5f5c 0x5f5c20207c5f -8100073e: 2c5f 7c5f 5f5c 0x5f5c7c5f2c5f -81000744: 7c5f 5f5c 2c5f 0x2c5f5f5c7c5f -8100074a: 7c5f 7c5f 5f5c 0x5f5c7c5f7c5f -81000750: 2c5f 7c5f 5f5c 0x5f5c7c5f2c5f -81000756: 7c5f 7c5f 5f5c 0x5f5c7c5f7c5f -8100075c: 5f5f 7c2f 7c5f 0x7c5f7c2f5f5f -81000762: 7c20 flw fs0,120(s0) -81000764: 7c5f 5f5f 285f 0x285f5f5f7c5f -8100076a: 7c5f 295f 000a 0xa295f7c5f -81000770: 2020 fld fs0,64(s0) -81000772: 2020 fld fs0,64(s0) -81000774: 2020 fld fs0,64(s0) -81000776: 2020 fld fs0,64(s0) -81000778: 2020 fld fs0,64(s0) -8100077a: 2020 fld fs0,64(s0) -8100077c: 2020 fld fs0,64(s0) -8100077e: 2020 fld fs0,64(s0) -81000780: 2020 fld fs0,64(s0) -81000782: 5f20 lw s0,120(a4) -81000784: 2f5f 7c20 2020 0x20207c202f5f -8100078a: 2020 fld fs0,64(s0) -8100078c: 2020 fld fs0,64(s0) -8100078e: 2020 fld fs0,64(s0) -81000790: 2020 fld fs0,64(s0) -81000792: 2020 fld fs0,64(s0) -81000794: 2020 fld fs0,64(s0) -81000796: 2020 fld fs0,64(s0) -81000798: 2020 fld fs0,64(s0) -8100079a: 2020 fld fs0,64(s0) -8100079c: 2020 fld fs0,64(s0) -8100079e: 2020 fld fs0,64(s0) -810007a0: 2020 fld fs0,64(s0) -810007a2: 2020 fld fs0,64(s0) -810007a4: 2020 fld fs0,64(s0) -810007a6: 2020 fld fs0,64(s0) -810007a8: 2020 fld fs0,64(s0) -810007aa: 2020 fld fs0,64(s0) -810007ac: 2020 fld fs0,64(s0) -810007ae: 2020 fld fs0,64(s0) -810007b0: 2020 fld fs0,64(s0) -810007b2: 2020 fld fs0,64(s0) -810007b4: 2020 fld fs0,64(s0) -810007b6: 2020 fld fs0,64(s0) -810007b8: 2020 fld fs0,64(s0) -810007ba: 2020 fld fs0,64(s0) -810007bc: 2020 fld fs0,64(s0) -810007be: 000a c.slli zero,0x2 -810007c0: 2020 fld fs0,64(s0) -810007c2: 2020 fld fs0,64(s0) -810007c4: 2020 fld fs0,64(s0) -810007c6: 2020 fld fs0,64(s0) -810007c8: 2020 fld fs0,64(s0) -810007ca: 2020 fld fs0,64(s0) -810007cc: 2020 fld fs0,64(s0) -810007ce: 2020 fld fs0,64(s0) -810007d0: 2020 fld fs0,64(s0) -810007d2: 5f7c lw a5,124(a4) -810007d4: 5f5f 202f 2020 0x2020202f5f5f -810007da: 2020 fld fs0,64(s0) -810007dc: 2020 fld fs0,64(s0) -810007de: 2020 fld fs0,64(s0) -810007e0: 2020 fld fs0,64(s0) -810007e2: 2020 fld fs0,64(s0) -810007e4: 2020 fld fs0,64(s0) -810007e6: 2020 fld fs0,64(s0) -810007e8: 2020 fld fs0,64(s0) -810007ea: 2020 fld fs0,64(s0) -810007ec: 2020 fld fs0,64(s0) -810007ee: 2020 fld fs0,64(s0) -810007f0: 2020 fld fs0,64(s0) -810007f2: 2020 fld fs0,64(s0) -810007f4: 2020 fld fs0,64(s0) -810007f6: 2020 fld fs0,64(s0) -810007f8: 2020 fld fs0,64(s0) -810007fa: 2020 fld fs0,64(s0) -810007fc: 2020 fld fs0,64(s0) -810007fe: 2020 fld fs0,64(s0) -81000800: 2020 fld fs0,64(s0) -81000802: 2020 fld fs0,64(s0) -81000804: 2020 fld fs0,64(s0) -81000806: 2020 fld fs0,64(s0) -81000808: 2020 fld fs0,64(s0) -8100080a: 2020 fld fs0,64(s0) -8100080c: 2020 fld fs0,64(s0) -8100080e: 000a c.slli zero,0x2 -81000810: 2024 fld fs1,64(s0) -81000812: 5020 lw s0,96(s0) -81000814: 6572 flw fa0,28(sp) -81000816: 43207373 csrrci t1,0x432,0 -8100081a: 544e lw s0,240(sp) -8100081c: 2d52 fld fs10,272(sp) -8100081e: 6f742043 fmadd.q ft0,fs0,fs7,fa3,rdn -81000822: 6520 flw fs0,72(a0) -81000824: 6978 flw fa4,84(a0) -81000826: 2074 fld fa3,192(s0) - ... - -Disassembly of section .comment: - -82000000 <.comment>: -82000000: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm -82000004: 2820 fld fs0,80(s0) -82000006: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm -8200000a: 3820 fld fs0,112(s0) -8200000c: 322e fld ft4,232(sp) -8200000e: 302e fld ft0,232(sp) - ... diff --git a/src/firmware/firmware.elf b/src/firmware/firmware.elf deleted file mode 100755 index f6a600f48c6a56d41eb02e6c13567b116a884a2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10852 zcmeHNU27Cq7(V-vjHb34BNesPqqAlcNH-#0sI)dT+P$$stsW$It)aUnOceb=>JpHh;9lT+dgQSQPgT_n^48W3c_U^nmwG=4wuTF)K^e!s>K0RN`O9|ism zjXwdr*0V#v?^Ax#gS|R83;Z6P`vLHKs@B4C75mch5%_xNvkS|u{oJ$)$$DJv?f1^Y z>vd7Jgz&`BcAaw`^>=x-Tg${t)jF53!NuCT*$-)t?RDp~kDG-r>bmcZOPF_uS9{o? zJ{)`YM8~q1k^7ogJFu+#eFXbet$&LBY}0xHvm1R3^SQ>(js+eHQpF z%Kreo1QtKz-TchwV0Y4<>G{vgpOXoCFJiHd(Ez?!tZ8Sug*`AQ@UFzyzYD}yPsguf zv36?(^;cZ4W+wPL6d->8<|d$;L{d$IZS{btXN-NNpD+?;=4@f@i4H~Gna zbkk~XQf~$CaUAb)9J3|t%-u%Ss;%0+OUZ}yLvEqrt_g5Bc59^)? z;vAQFr_&T)Xnt?ihwMX3^j@#de`jG9irvR^uB|@msy9OJY7d{%T-ADgyXGs7J;t%e zgx+HVe8s^R&6LC*8+Pi4wR545EqSg+;cH7^uEt```O{7%!AH=+vt^bV=)W?bKCNcM ztQ*Zn?=H=sNG~+72SGFUOxL&D!4pCLD)9;))L!_v`%H70z}yMUous)Vi5Q3&h!}_% zh!}_%h!}_%h!}_%_EVhFS_@EIF;@!ZM*k zab1EI^um&2$(ey>;h-TAR|@NDKs_cEQCX=RK#;IZsN__y6bNQC_u_)cFauE;!qLe1 zV<8>MfZ$G|24ZMu8G>;t*XZnX0K#DZm0H)M0WEg;Cbk>+>G+n^U682SITyrL8Uz3 zi)W)Dm2i7*!#v?8*OoD4^M+}}HVzHZoAhFa6(ig%>_uFm6md)eOk)(r;YJ(8LcLgr zN!ctsiDKGh5)quB3#kg~PNg8GOjr+5EjgZoduflF)Wl!@+TKfV=jAui710ZSbe^5| z&a;W}{EW=Y(J7pAIQHadzU00uKb{#Zez3sanJ-_JCr(PjTpV*vyf`Vx^OaGzLL)sN zn=IwW$5rsfe3(-fN2mtVYV=mV17DYD*_&vy_!THI8m)a!|2jN*XSp7of9edx0u-6_ zPyGQ!7TlCUPUC6Ifl5)XHwX|eI+@bA;}mf|LoCf+(lnOvI>w&19H?PEnqAG$9gsz~ z`lmIrwXe;?dsa9c1vn0Xq5Z;e=o;i4XBPSZ=Tl^WZT1nqqvi*xlz4Yn)OAAo5Z_X|Njq@SU0AQdKBw)ySbu^2t+wgY#9TrI zKWY0oR!D#voG(5vR!Y z&D@-j>O0EyIO2hD`k7qs?-QcifOL%FZM8W1HgLD0(RZ74QD2NAw&F_QGV&X6?-&Cs T)ghrC?YKP{ firmware.dump - /opt/riscv-nommu/bin/riscv32-unknown-linux-gnu-objcopy -O ihex firmware.elf firmware.hex \ No newline at end of file diff --git a/src/firmware/linker.ld b/src/firmware/linker.ld deleted file mode 100644 index 9a7d48ba..00000000 --- a/src/firmware/linker.ld +++ /dev/null @@ -1,44 +0,0 @@ -/* ---- Original Script: /opt/riscv32i/riscv32-unknown-elf/lib/ldscripts/elf32lriscv.x ---- */ -/* Default linker script, for normal executables */ -/* Copyright (C) 2014-2017 Free Software Foundation, Inc. - Copying and distribution of this script, with or without modification, - are permitted in any medium without royalty provided the copyright - notice and this notice are preserved. */ -OUTPUT_FORMAT("elf32-littleriscv", "elf32-littleriscv", - "elf32-littleriscv") -OUTPUT_ARCH(riscv) -ENTRY(main) -SECTIONS -{ - . = 0x80000000; - .text : - { - *(.text) - *(.text.unlikely .text.*_unlikely .text.unlikely.*) - *(.text.exit .text.exit.*) - *(.text.startup .text.startup.*) - *(.text.hot .text.hot.*) - *(.stub .text.* .gnu.linkonce.t.*) - /* .gnu.warning sections are handled specially by elf32.em. */ - *(.gnu.warning) - } - .init : - { - KEEP (*(SORT_NONE(.init))) - } - .plt : { *(.plt) } - .iplt : { *(.iplt) } - .fini : - { - KEEP (*(SORT_NONE(.fini))) - } - PROVIDE (__etext = .); - PROVIDE (_etext = .); - PROVIDE (etext = .); - . = 0x81000000; - .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } - .rodata1 : { *(.rodata1) } - . = 0x82000000; - .comment : { *(.comment) } - -} \ No newline at end of file diff --git a/src/harptool.cpp b/src/harptool.cpp index 18edaffd..94e1205a 100644 --- a/src/harptool.cpp +++ b/src/harptool.cpp @@ -50,163 +50,6 @@ HarpToolMode findMode(int argc, char** argv) { return HARPTOOL_MODE_HELP; } -int asm_main(int argc, char **argv) { - // string archString("8w32/32/8/8"), outFileName("a.out.HOF"), - // inFileName(argv[argc-1]); - // bool showHelp; - - // /* Get command line arguments. */ - // CommandLineArgFlag fh("-h", "--help", "", showHelp); - // CommandLineArgSetterfo("-o", "--output", "", outFileName); - // CommandLineArgSetterfa("-a", "--arch", "", archString); - - // CommandLineArg::readArgs(argc-1, argv); - - // if (showHelp || argc == 0) { - // cout << Help::asmHelp; - // exit(0); - // } - - // ArchDef arch(archString); - - // D(0, "Created ArchDef for " << string(arch)); - - // /* Create an appropriate encoder. */ - // Encoder *enc; - // switch (arch.getEncChar()) { - // case 'b': enc = new ByteEncoder(arch); break; - // case 'w': enc = new WordEncoder(arch); break; - // defaulet: - // cout << "Unknown encoding type, \"" << arch.getEncChar() << "\"\n"; - // exit(1); - // } - - // /* Open files. */ - // if (outFileName == "") { - // cout << "HARP Assembler: No output filename given.\n"; - // exit(1); - // } - - // ifstream asmFile(inFileName.c_str()); - // ofstream outFile(outFileName.c_str()); - - // if (!asmFile) { - // cout << "Could not open \"" << inFileName << "\" for reading.\n"; - // exit(1); - // } - - // if (!outFile) { - // cout << "Could not open \"" << outFileName << "\" for writing.\n"; - // exit(1); - // } - - // /* Read an Obj from the assembly file. */ - // D(0, "Passing AsmReader ArchDef: " << string(arch)); - // AsmReader ar(arch); - // Obj *o = ar.read(asmFile); - - // /* Encode the text chunks read from the assembly file. */ - // for (Size j = 0; j < o->chunks.size(); j++) { - // Chunk *&c = o->chunks[j]; - // TextChunk *tc; - // DataChunk *dc; - // if ((tc = dynamic_cast(c)) != NULL) { - // /* Encode it. */ - // dc = new DataChunk(tc->name); - // enc->encodeChunk(*dc, *tc); - - // /* Delete the text chunk. */ - // delete tc; - - // /* Do the switch. */ - // c = dc; - // } - // } - // asmFile.close(); - // delete enc; - - // /* Write a HOF binary. */ - // D(0, "Creating a HOFWriter, passing it ArchDef: " << string(arch)); - // HOFWriter hw(arch); - // hw.write(outFile, *o); - // outFile.close(); - - // delete o; - - return 0; -} - -int disasm_main(int argc, char **argv) { - // bool showHelp; - // string outFileName("a.out.s"), archString("8w32/32/8/8"); - - - // /* Get command line arguments. */ - // CommandLineArgFlag fh("-h", "--help", "", showHelp); - // CommandLineArgSetterfa("-a", "--arch", "", archString); - // CommandLineArgSetterfo("-o", "--output", "", outFileName); - - // if (argc != 0) CommandLineArg::readArgs(argc-1, argv); - - // if (argc == 0 || showHelp) { - // cout << Help::disasmHelp; - // exit(0); - // } - - // ifstream objFile(argv[argc-1]); - // ofstream outFile(outFileName.c_str()); - // ArchDef arch(archString); - - // if (!objFile) { - // cout << "Disassembler could not open \"" << argv[argc-1] - // << "\" for reading.\n"; - // exit(1); - // } - - // if (!outFile) { - // cout << "Disassembler could not open \"" << outFileName - // << "\" for output.\n"; - // exit(1); - // } - - // HOFReader hr(arch); - // Obj *o = hr.read(objFile); - // objFile.close(); - // Decoder *dec; - - // switch (arch.getEncChar()) { - // case 'b': dec = new ByteDecoder(arch); break; - // case 'w': dec = new WordDecoder(arch); break; - // default: - // cout << "Unrecognized encoding character for disassembler.\n"; - // exit(1); - // } - - // /* Decode the chunks read from the object. */ - // for (Size j = 0; j < o->chunks.size(); j++) { - // Chunk *&c = o->chunks[j]; - // if (c->flags & EX_USR) { - // TextChunk *tc; - // DataChunk *dc; - // if ((dc = dynamic_cast(c)) != NULL) { - // TextChunk *tc = new TextChunk(dc->name); - // dec->decodeChunk(*tc, *dc); - // delete dc; - // c = tc; - // } - // } - // } - // delete dec; - - // AsmWriter aw(arch); - // aw.write(outFile, *o); - // outFile.close(); - - // delete o; - - return 0; -} - int emu_main(int argc, char **argv) { string archString("rv32i"), imgFileName("a.dsfsdout.bin"); bool showHelp, showStats, basicMachine, batch; @@ -267,129 +110,14 @@ int emu_main(int argc, char **argv) { return 0; } -int ld_main(int argc, char **argv) { - // bool showHelp, mustResolveRefs(true); - // string outFileName("a.out.bin"), archString("8w32/32/8/8"), - // formatString("bin"); - // Size nObjects; - // Addr binOffset(0); - - // /* Get command line arguments. */ - // CommandLineArgFlag fh("-h", "--help", "", showHelp); - // CommandLineArgSetterfa("-a", "--arch", "", archString); - // CommandLineArgSetterff("-f", "--format", "", formatString); - // CommandLineArgSetter foffset("--offset", "", binOffset); - // CommandLineArgSetterfo("-o", "--output", "", outFileName); - - // int firstInput(0), newArgc; - // for (size_t i = 0; i < argc; i++) { - // if (*(argv[i]) != '-') { firstInput = i; newArgc = i; break; } - // else if (string(argv[i]) == "--") { firstInput = i+1; newArgc = i; break; } - // else i++; /* Skip both the switch and its argument. */ - // } - // nObjects = argc - firstInput; - - // if (argc != 0) CommandLineArg::readArgs(newArgc, argv); - - // if (argc == 0 || showHelp) { - // cout << Help::ldHelp; - // exit(0); - // } - - // if (firstInput == argc) { - // cout << "Linker: no input files given.\n"; - // exit(1); - // } - - // ArchDef arch(archString); - - // /* Read all of the objects, assign addresses to their chunks, and place them - // in an address map.*/ - // vector objects(nObjects); - // vector chunks; - // map gChunkMap; - // Addr nextOffset(binOffset); - - // for (Size i = 0; i < nObjects; i++) { - // map lChunkMap; - - // /* Read the object. */ - // HOFReader hr(arch); - // ifstream objFile(argv[firstInput + i]); - // if (!objFile) { - // cout << "Could not open \"" << argv[firstInput + i] - // << "\" for reading.\n"; - // exit(1); - // } - // objects[i] = hr.read(objFile); - - // /* Assign addresses to chunks. */ - // Obj &obj = *objects[i]; - // for (Size j = 0; j < obj.chunks.size(); j++) { - // DataChunk *c = dynamic_cast(obj.chunks[j]); - // if (c->alignment != 0 && nextOffset % c->alignment) - // nextOffset += c->alignment - (nextOffset % c->alignment); - // c->bind(nextOffset); - // chunks.push_back(c); - // if (obj.chunks[j]->name != "") { - // if (c->isGlobal()) gChunkMap[c->name] = nextOffset; - // else lChunkMap[c->name] = nextOffset; - // } - // nextOffset += (c->size); - // } - - // /* Resolve local references. */ - // for (Size i = 0; i < obj.chunks.size(); i++) { - // DataChunk *dc = dynamic_cast(obj.chunks[i]); - // for (Size j = 0; j < dc->refs.size(); j++) { - // Ref &ref = *(dc->refs[j]); - // if (lChunkMap.find(dc->refs[j]->name) != lChunkMap.end()) { - // dc->refs[j]->bind(lChunkMap[dc->refs[j]->name], - // dc->address + dc->refs[j]->ibase); - // } - // } - // } - // } - - // /* Resolve references. */ - // for (Size i = 0; i < chunks.size(); i++) { - // DataChunk *dc = chunks[i]; - // for (Size j = 0; j < dc->refs.size(); j++) { - // Ref &ref = *(dc->refs[j]); - // if (!ref.bound && (gChunkMap.find(ref.name) != gChunkMap.end())) { - // ref.bind(gChunkMap[ref.name], dc->address + ref.ibase); - // } else if (!ref.bound && mustResolveRefs) { - // cout << "Undefined symbol: \"" << ref.name << "\"\n"; - // exit(1); - // } - // } - // } - - // /* Write out the chunks. */ - // ofstream outFile(outFileName.c_str()); - // for (Size i = 0; i < chunks.size(); i++) { - // if (outFile.tellp() > chunks[i]->address - binOffset) { - // cout << "Linker internal error. Wrote past next chunk address.\n"; - // exit(1); - // } - // while (outFile.tellp() < chunks[i]->address - binOffset) outFile.put('\0'); - // outFile.seekp(chunks[i]->address - binOffset); - // outFile.write((char*)&chunks[i]->contents[0], chunks[i]->contents.size()); - // } - - // /* Clean up. */ - // for (Size i = 0; i < nObjects; i++) delete objects[i]; - - return 0; -} int main(int argc, char** argv) { try { switch (findMode(argc - 1, argv + 1)) { - case HARPTOOL_MODE_ASM: return asm_main (argc - 2, argv + 2); - case HARPTOOL_MODE_DISASM: return disasm_main(argc - 2, argv + 2); + case HARPTOOL_MODE_ASM: cout << "ASM not supported\n"; + case HARPTOOL_MODE_DISASM: cout << "DISASM not supported\n"; case HARPTOOL_MODE_EMU: return emu_main (argc - 2, argv + 2); - case HARPTOOL_MODE_LD: return ld_main (argc - 2, argv + 2); + case HARPTOOL_MODE_LD: cout << "LD not supported\n"; case HARPTOOL_MODE_HELP: default: cout << "Usage:\n" << Help::mainHelp; diff --git a/src/mem.cpp b/src/mem.cpp index 54d750c8..ebd71530 100644 --- a/src/mem.cpp +++ b/src/mem.cpp @@ -178,16 +178,6 @@ Word MemoryUnit::fetch(Addr vAddr, bool sup) { Word instruction = ad.read(pAddr, sup, 8*addrBytes); - // Flip endianess (instead of changing decoding logic) - // Word first = (instruction) & 0xFF; - // Word second = (instruction >> 8) & 0xFF; - // Word third = (instruction >> 16) & 0xFF; - // Word fourth = (instruction >> 24) & 0xFF; - // instruction = (instruction & 0xFFFFFF00) | fourth; - // instruction = (instruction & 0xFFFF00FF) | (third << 8); - // instruction = (instruction & 0xFF00FFFF) | (second << 16); - // instruction = (instruction & 0x00FFFFFF) | (first << 24); - return instruction; } diff --git a/src/obj.cpp b/src/obj.cpp deleted file mode 100644 index f0a41a0a..00000000 --- a/src/obj.cpp +++ /dev/null @@ -1,748 +0,0 @@ -/******************************************************************************* - HARPtools by Chad D. Kersey, Summer 2011 -*******************************************************************************/ -// #include "include/types.h" -// #include "include/obj.h" -// #include "include/util.h" -// #include "include/asm-tokens.h" -// #include "include/debug.h" - -// #include -// #include -// #include - -// #include -// #include -// #include - -// #include - -// using namespace std; -// using namespace Harp; -// using namespace HarpTools; - -// extern struct rval_t { std::string s; uint64_t u; } yylval; -// extern unsigned yyline; - -// static void asmReaderError(unsigned line, const string &message) { -// cout << "Assembly reader error, line " << line << ": " << message << '\n'; -// exit(1); -// } - -// static int skip_parens(const string &s, int i) { -// int paren_level = 1; -// do { -// i++; -// if (s[i] == '(') paren_level++; -// if (s[i] == ')') paren_level--; -// } while (paren_level > 0); - -// return i; -// } - -// // Probably the worst recursive descent parser ever written, but it's an easy -// // way to make our assembly language prettier. -// static uint64_t rPE(bool &v, const string &s, const map &d, -// int start, int end) -// { -// D(2, "rPE(" << v << ", " << s << ", d, " << start << ", " << end << ");"); - -// if (end == start) { v = false; return 0; } - -// while (isspace(s[start])) start++; -// while (isspace(s[end-1])) end--; - -// for (int i = start; i < end; i++) { -// if (s[i] == '(') { i = skip_parens(s, i); continue; } - -// if (s[i] == '<') return rPE(v, s, d, start, i) << rPE(v, s, d, i+2, end); -// if (s[i] == '>') return rPE(v, s, d, start, i) >> rPE(v, s, d, i+2, end); -// } - -// for (int i = start; i < end; i++) { -// if (s[i] == '(') { i = skip_parens(s, i); continue; } -// if (s[i] == '+') return rPE(v, s, d, start, i) + rPE(v, s, d, i+1, end); -// if (s[i] == '-') { -// // If we've already failed, don't try this. -// if (v == false) return 0; - -// // If it works as a binary -, return that. Otherwise, it's a unary - -// uint64_t x(rPE(v, s, d, start, i) - rPE(v, s, d, i+1, end)); -// if (v) return x; -// else v = true; -// } -// if (s[i] == '|') return rPE(v, s, d, start, i) | rPE(v, s, d, i+1, end); -// if (s[i] == '^') return rPE(v, s, d, start, i) ^ rPE(v, s, d, i+1, end); -// } - -// for (int i = start; i < end; i++) { -// if (s[i] == '(') { i = skip_parens(s, i); continue; } -// if (s[i] == '*') return rPE(v, s, d, start, i) * rPE(v, s, d, i+1, end); -// if (s[i] == '/') return rPE(v, s, d, start, i) / rPE(v, s, d, i+1, end); -// if (s[i] == '%') return rPE(v, s, d, start, i) % rPE(v, s, d, i+1, end); -// if (s[i] == '&') return rPE(v, s, d, start, i) & rPE(v, s, d, i+1, end); -// } - -// // Unary operators -// if (s[start] == '-') return -rPE(v, s, d, start+1, end); -// if (s[start] == '`') return log2(rPE(v, s, d, start+1, end)); - -// if (isdigit(s[start])) { -// unsigned long long u; -// sscanf(s.substr(start, end-start).c_str(), "%lli", &u); -// return u; -// } - -// if (s[start] == '(') return rPE(v, s, d, start+1, end-1); - -// string label(s.substr(start, end-start)); -// map::const_iterator it(d.find(label)); -// if (it != d.end()) return it->second; - -// // If nothing else works, set valid to false. -// v = 0; -// return 0; -// } - -// static uint64_t readParenExpression(bool &valid, const string &s, -// const map &d) -// { -// valid = true; -// return rPE(valid, s, d, 0, s.length()); -// } - -// AsmReader::ArgType AsmReader::operandtype_table[][4] = { -// {AT_END}, // AC_NONE -// {AT_REG, AT_REG, AT_END}, // AC_2REG -// {AT_REG, AT_LIT, AT_END}, // AC_2IMM -// {AT_REG, AT_REG, AT_REG, AT_END}, // AC_3REG -// {AT_PREG, AT_PREG, AT_PREG, AT_END}, // AC_3PREG -// {AT_REG, AT_REG, AT_LIT, AT_END}, // AC_3IMM -// {AT_REG, AT_REG, AT_REG, AT_END}, // AC_3REGSRC -// {AT_LIT, AT_END}, // AC_1IMM -// {AT_REG, AT_END}, // AC_1REG -// {AT_REG, AT_REG, AT_LIT, AT_END}, // AC_3IMMSRC -// {AT_PREG, AT_REG, AT_END}, // AC_PREG_REG -// {AT_PREG, AT_PREG, AT_END}, // AC_2PREG -// {AT_REG, AT_REG, AT_END} // AC_2REGSRC -// }; - -// int lexerFloatBytes; -// Obj *AsmReader::read(std::istream &input) { -// lexerFloatBytes = wordSize; -// FlexLexer *f = new yyFlexLexer(&input); -// Obj *o = new Obj(); -// std::vector::reverse_iterator cur; -// bool permR(true), permW(false), permX(false), entry(false), nextPred(false), -// global(false); - -// map defs; - -// /* Pre-defined defs. */ -// defs["__WORD"] = wordSize; - -// map opMap; - -// // Build opMap -// for (size_t i = 0; Instruction::instTable[i].opString; i++) -// opMap[std::string(Instruction::instTable[i].opString)] -// = Instruction::Opcode(i); - -// enum { -// ST_INIT, ST_DEF1, ST_DEF2, ST_PERM, ST_WORD1, ST_SPACE, ST_STRING1, -// ST_STRING2, ST_BYTE1, ST_BYTE2, ST_ALIGN, ST_INST1, ST_INST2 -// } state(ST_INIT); - -// enum { OS_NOCHUNK, OS_TEXTCHUNK, OS_DATACHUNK } outstate(OS_NOCHUNK); -// TextChunk *tc; -// DataChunk *dc; -// Instruction *curInst; -// string string_arg, next_chunk_name; -// bool chunkCreated = true; -// Size next_chunk_align(0); -// uint64_t num_arg; -// RegNum nextPredNum; -// Instruction::ArgClass ac; -// int argPos; - -// AsmTokens t; -// while ((t = (AsmTokens)f->yylex()) != 0) { -// switch (t) { -// case ASM_T_DIR_DEF: -// if (state == ST_INIT) state = ST_DEF1; -// else { asmReaderError(yyline, "Unexpected .def"); } -// break; -// case ASM_T_DIR_PERM: -// if (state == ST_INIT) { -// state = ST_PERM; -// permR = permW = permX = false; -// if (outstate != OS_NOCHUNK) { -// outstate = OS_NOCHUNK; -// entry = false; -// global = false; -// } -// } else { asmReaderError(yyline, "Unexpected .perm"); } -// break; -// case ASM_T_DIR_BYTE: -// if (state == ST_INIT) { -// state = ST_BYTE1; -// } else { asmReaderError(yyline, "Unexpected .byte"); } -// break; -// case ASM_T_DIR_WORD: -// if (state == ST_INIT) { -// state = ST_WORD1; -// } else { asmReaderError(yyline, "Unexpected .word"); } -// break; -// case ASM_T_DIR_SPACE: -// if (state == ST_INIT) state = ST_SPACE; -// else asmReaderError(yyline, "Unexpected .space"); -// break; -// case ASM_T_DIR_STRING: -// if (state == ST_INIT) { -// state = ST_STRING1; -// } else { asmReaderError(yyline, "Unexpected .string"); } -// break; -// case ASM_T_DIR_ALIGN: -// if (state == ST_INIT) { -// state = ST_ALIGN; -// } else { asmReaderError(yyline, "Unexpected .align"); } -// break; -// case ASM_T_DIR_ENTRY: -// outstate = OS_NOCHUNK; -// entry = true; -// break; -// case ASM_T_DIR_GLOBAL: -// outstate = OS_NOCHUNK; -// global = true; -// break; -// case ASM_T_DIR_ARG_NUM: -// switch (state) { -// case ST_DEF2: defs[string_arg] = yylval.u; state = ST_INIT; break; -// case ST_WORD1: { -// if (outstate != OS_DATACHUNK) { -// outstate = OS_DATACHUNK; -// dc = new DataChunk(next_chunk_name, next_chunk_align? -// next_chunk_align:wordSize, -// flagsToWord(permR, permW, permX)); -// next_chunk_align = 0; -// o->chunks.push_back(dc); -// if (entry) o->entry = o->chunks.size() - 1; -// if (global) dc->setGlobal(); -// chunkCreated = true; -// } -// dc->size += wordSize; -// dc->contents.resize(dc->size); -// wordToBytes(&*(dc->contents.end()-wordSize), yylval.u, wordSize); -// } break; -// case ST_SPACE: { -// // TODO: the following statement is basically copied from above. Fix -// // this. -// if (outstate != OS_DATACHUNK) { -// outstate = OS_DATACHUNK; -// dc = new DataChunk(next_chunk_name, next_chunk_align? -// next_chunk_align:wordSize, -// flagsToWord(permR, permW, permX)); -// next_chunk_align = 0; -// o->chunks.push_back(dc); -// if (entry) o->entry = o->chunks.size() - 1; -// if (global) dc->setGlobal(); -// chunkCreated = true; -// } -// size_t oldSize = dc->size; -// dc->size += wordSize * yylval.u; -// dc->contents.resize(dc->size); -// for (size_t i = oldSize; i < dc->size; ++i) dc->contents[i] = 0; -// } break; -// case ST_BYTE1: -// if (outstate != OS_DATACHUNK) { -// // TODO: more of this pasted code -// outstate = OS_DATACHUNK; -// dc = new DataChunk(next_chunk_name, -// next_chunk_align?next_chunk_align:wordSize, -// flagsToWord(permR, permW, permX)); -// next_chunk_align = 0; -// o->chunks.push_back(dc); -// if (entry) o->entry = o->chunks.size() - 1; -// if (global) dc->setGlobal(); -// chunkCreated = true; -// } -// dc->size++; -// dc->contents.resize(dc->size); -// *(dc->contents.end() - 1) = yylval.u; -// state = ST_INIT; -// break; -// case ST_ALIGN: -// next_chunk_align = yylval.u; -// if (outstate != OS_NOCHUNK) { -// outstate = OS_NOCHUNK; -// entry = false; -// global = false; -// } -// state = ST_INIT; -// break; -// default: asmReaderError(yyline, "Unexpected literal argument"); -// } -// break; -// case ASM_T_DIR_ARG_STRING: -// if (state == ST_STRING1) { -// if (outstate != OS_DATACHUNK) { -// // TODO: pasted code (see above) -// outstate = OS_DATACHUNK; -// dc = new DataChunk(next_chunk_name, -// next_chunk_align?next_chunk_align:wordSize, -// flagsToWord(permR, permW, permX)); -// next_chunk_align = 0; -// o->chunks.push_back(dc); -// if (entry) o->entry = o->chunks.size() - 1; -// if (global) dc->setGlobal(); -// chunkCreated = true; -// } -// const char *s = yylval.s.c_str(); -// do { -// if (*s == '\\') { -// switch (*(++s)) { -// case 'n': dc->contents.push_back('\n'); break; -// case '"': dc->contents.push_back(*s); break; -// default: dc->contents.push_back(*s); break; -// } -// } else { -// dc->contents.push_back(*s); -// } -// dc->size++; -// } while(*(s++)); -// } else { -// asmReaderError(yyline, "Unexpected string literal."); -// } -// state = ST_INIT; -// break; -// case ASM_T_DIR_ARG_SYM: -// switch (state) { -// case ST_DEF1: string_arg = yylval.s; state = ST_DEF2; break; -// default: asmReaderError(yyline, ""); -// }; -// break; -// case ASM_T_DIR_ARG_R: -// permR = true; -// break; -// case ASM_T_DIR_ARG_W: -// permW = true; -// break; -// case ASM_T_DIR_ARG_X: -// permX = true; -// break; -// case ASM_T_DIR_END: -// if (state == ST_INST1 || state == ST_INST2) { -// if (outstate == OS_TEXTCHUNK) { -// tc->instructions.push_back(curInst); -// } else { -// asmReaderError(yyline, "Inst not in text chunk(internal error)"); -// } -// } -// state = ST_INIT; -// break; -// case ASM_T_LABEL: -// if (!chunkCreated) { -// // We have an empty label; create an empty chunk. -// dc = new DataChunk(next_chunk_name, 0, -// flagsToWord(permR, permW, permX)); -// next_chunk_align = 0; -// o->chunks.push_back(dc); -// if (entry) o->entry = o->chunks.size() - 1; -// if (global) dc->setGlobal(); -// } - -// if (outstate != OS_NOCHUNK) { -// entry = false; -// global = false; -// outstate = OS_NOCHUNK; -// } -// next_chunk_name = yylval.s; -// chunkCreated = false; -// break; -// case ASM_T_PRED: -// nextPred = true; -// nextPredNum = yylval.u; -// break; -// case ASM_T_INST: -// if (state == ST_INIT) { -// map::iterator -// opcIterator = opMap.find(yylval.s); - -// if (opcIterator == opMap.end()) -// asmReaderError(yyline, "Invalid Instruction"); -// Instruction::Opcode opc = opcIterator->second; -// if (outstate != OS_TEXTCHUNK) { -// tc = new TextChunk(next_chunk_name, next_chunk_align, -// flagsToWord(permR, permW, permX)); -// next_chunk_align = 0; -// o->chunks.push_back(tc); -// if (entry) o->entry = o->chunks.size() - 1; -// if (global) tc->setGlobal(); -// outstate = OS_TEXTCHUNK; -// chunkCreated = true; -// } -// curInst = new Instruction(); -// curInst->setOpcode(opc); -// ac = Instruction::instTable[opc].argClass; -// argPos = 0; -// if (nextPred) { -// nextPred = false; -// curInst->setPred(nextPredNum); -// } -// state = Instruction::instTable[opc].allSrcArgs?ST_INST2:ST_INST1; -// } else { asmReaderError(yyline, "Unexpected instruction"); } -// break; -// case ASM_T_PREG: -// if (operandtype_table[ac][argPos++] != AT_PREG) -// asmReaderError(yyline, "Unexpected predicate register"); -// switch (state) { -// case ST_INST1: curInst->setDestPReg(yylval.u); -// state = ST_INST2; -// break; -// case ST_INST2: curInst->setSrcPReg(yylval.u); -// break; -// default: asmReaderError(yyline, "Unexpected predicate register"); -// } -// break; - -// case ASM_T_REG_RA: -// yylval.u = nRegs - 1; -// goto continue_reg; - -// case ASM_T_REG_FP: -// yylval.u = nRegs - 3; -// goto continue_reg; - -// case ASM_T_REG_SP: -// yylval.u = nRegs - 2; -// goto continue_reg; - -// case ASM_T_REG: -// continue_reg: -// if (operandtype_table[ac][argPos++] != AT_REG) -// asmReaderError(yyline, "Unexpected register operand."); -// switch (state) { -// case ST_INST1: curInst->setDestReg(yylval.u); -// state = ST_INST2; -// break; -// case ST_INST2: curInst->setSrcReg(yylval.u); -// break; -// default: asmReaderError(yyline, "Unexpected register"); -// } -// break; -// case ASM_T_PEXP: { -// // Decode the paren expression. -// bool valid; -// yylval.u = readParenExpression(valid, yylval.s, defs); -// if (!valid) asmReaderError(yyline, "Invalid paren expression"); -// } -// case ASM_T_LIT: -// if (operandtype_table[ac][argPos++] != AT_LIT) -// asmReaderError(yyline, "Unexpected literal operand."); -// switch (state) { -// case ST_INST1: asmReaderError(yyline, "Unexpected literal"); -// case ST_INST2: curInst->setSrcImm(yylval.u); -// break; -// default: asmReaderError(yyline, "Unexpected literal"); -// } -// break; -// case ASM_T_SYM: -// if (operandtype_table[ac][argPos++] != AT_LIT) -// asmReaderError(yyline, "Unexpected symbol operand."); -// switch (state) { -// case ST_INST1: asmReaderError(yyline, "Unexpected symbol"); -// case ST_INST2: if (defs.find(yylval.s) != defs.end()) { -// curInst->setSrcImm(defs[yylval.s]); -// } else { -// Ref *r = new -// SimpleRef(yylval.s, *curInst->setSrcImm(), -// curInst->hasRelImm()); -// tc->refs.push_back(r); -// curInst->setImmRef(*r); -// } -// break; -// default: asmReaderError(yyline, "Unexpected symbol"); -// } -// break; -// default: asmReaderError(yyline, "Invalid state(internal error)"); -// }; -// } - -// if (!chunkCreated) { -// // We have an empty label; create an empty chunk. -// dc = new DataChunk(next_chunk_name, 0, -// flagsToWord(permR, permW, permX)); -// next_chunk_align = 0; -// o->chunks.push_back(dc); -// if (entry) o->entry = o->chunks.size() - 1; -// if (global) dc->setGlobal(); -// } - -// return o; -// } - -// void AsmWriter::write(std::ostream &output, const Obj &obj) { -// Word prevFlags(0); - -// for (size_t j = 0; j < obj.chunks.size(); j++) { -// Chunk * const &c = obj.chunks[j]; - -// /* Write out the flags. */ -// if (c->flags != prevFlags) { -// bool r, w, x; -// wordToFlags(r, w, x, c->flags); -// output << ".perm "; -// if (r) output << 'r'; -// if (w) output << 'w'; -// if (x) output << 'x'; -// output << '\n'; -// prevFlags = c->flags; -// } - -// /* Write align if set. */ -// if (c->alignment) output << ".align 0x" << hex << c->alignment << '\n'; - -// TextChunk * const tc = dynamic_cast(c); -// DataChunk * const dc = dynamic_cast(c); - -// if (tc) { -// if (j == obj.entry) output << "\n.entry\n"; -// if (c->isGlobal()) output << "\n.global\n"; -// if (tc->name != "") output << tc->name << ':'; - -// for (size_t i = 0; i < tc->instructions.size(); i++) { -// output << "\t" << *(tc->instructions[i]) << '\n'; -// } -// } else if (dc) { -// if (c->name != "") output << c->name << ':' << endl; - -// Size i; -// for (i = 0; i < dc->contents.size();) { -// Size tmpWordSize = (dc->contents.size() - i < wordSize) ? -// dc->contents.size() - i : wordSize; - -// i += tmpWordSize; -// Word w = 0; -// for (size_t j = 0; j < tmpWordSize; j++) { -// w <<= 8; -// w |= dc->contents[i - j - 1]; -// } - -// if (i == tmpWordSize && c->name != "") -// output << " .word " << " 0x" << hex << w << endl; -// else -// output << " .word " << " 0x" << hex << w << endl; -// } - -// if (i % wordSize) i += (wordSize - (i%wordSize)); - -// if (dc->size > i) { -// Size fillSize = (dc->size - i)/wordSize; -// output << ".word 0x" << hex << fillSize << '\n'; -// } -// } else { -// cout << "Unrecognized chunk type in AsmWriter.\n"; -// exit(1); -// } -// } -// } - -// enum HOFFlag { HOF_GLOBAL = 1 }; - -// Word getHofFlags(Chunk &c) { -// Word w = 0; -// if (c.isGlobal()) w |= HOF_GLOBAL; -// return w; -// } - -// static void outputWord(std::ostream &out, Word w, -// vector &tmp, Size wordSize) -// { -// Size n(0); -// writeWord(tmp, n, wordSize, w); -// out.write((char*)&tmp[0], wordSize); -// } - -// void HOFWriter::write(std::ostream &output, const Obj &obj) { -// string archString(arch); -// Size wordSize(arch.getWordSize()), n, offsetVectorPos; - -// vector tmp; -// vector offsets(obj.chunks.size()); - -// /* Magic number, arch string, and padding. */ -// output.write("HARP", 4); -// output.write(archString.c_str(), archString.length()+1); -// Size padBytes = (wordSize-(4+archString.length()+1)%wordSize)%wordSize; -// for (Size i = 0; i < padBytes; i++) output.put(0); - -// /* Write out the entry chunk index. */ -// outputWord(output, obj.entry, tmp, wordSize); - -// /* Write out the number of chunks. */ -// outputWord(output, obj.chunks.size(), tmp, wordSize); - -// /* Skip the chunk size offset vector. */ -// offsetVectorPos = output.tellp(); -// output.seekp(output.tellp() + streampos(wordSize * obj.chunks.size())); - -// /* Write out the chunks, keeping track of their offsets. */ -// for (Size i = 0; i < obj.chunks.size(); i++) { -// offsets[i] = output.tellp(); - -// // Is it a data chunk? -// DataChunk *dc = dynamic_cast(obj.chunks[i]); -// if (!dc) { cout << "HOFWriter::write(): invalid chunk type.\n"; exit(1); } - -// D(1, "Writing chunk \"" << dc->name << "\", size=" << dc->contents.size()); - -// // Chunk name -// output.write(dc->name.c_str(), dc->name.length() + 1); - -// /* Padding */ -// padBytes = (wordSize - (dc->name.length()+1)%wordSize)%wordSize; -// for (Size i = 0; i < padBytes; i++) output.put(0); - -// /* Chunk alignment, flags, address, size (in RAM and disk) */ -// outputWord(output, dc->alignment, tmp, wordSize); -// outputWord(output, dc->flags, tmp, wordSize); -// outputWord(output, getHofFlags(*dc), tmp, wordSize); -// outputWord(output, dc->bound?dc->address:0, tmp, wordSize); -// outputWord(output, dc->size, tmp, wordSize); -// outputWord(output, dc->contents.size(), tmp, wordSize); - -// /* References */ -// outputWord(output, dc->refs.size(), tmp, wordSize); -// for (Size j = 0; j < dc->refs.size(); j++) { -// OffsetRef *r = dynamic_cast(dc->refs[j]); -// if (!r) { cout << "HOFWriter::write(): invalid ref type.\n"; exit(1); } -// /* Reference name */ -// output.write(r->name.c_str(), r->name.length() + 1); -// /* Padding */ -// padBytes = (wordSize - (r->name.length() + 1)%wordSize)%wordSize; -// for (Size i = 0; i < padBytes; i++) output.put(0); -// /* Compute flags word. */ -// Word rFlags(0); -// if (r->relative) rFlags |= 1; -// /* Output flags word. */ -// outputWord(output, rFlags, tmp, wordSize); -// /* Offset from which relative branches are computed. */ -// outputWord(output, r->ibase, tmp, wordSize); -// /* Reference offset in block. */ -// outputWord(output, r->getOffset(), tmp, wordSize); -// /* Reference size in bits. */ -// outputWord(output, r->getBits(), tmp, wordSize); -// } - -// /* Chunk data. */ -// output.write((char*)&(dc->contents[0]), dc->contents.size()); - -// /* Chunk padding. */ -// padBytes = (wordSize - dc->contents.size()%wordSize)%wordSize; -// for (Size i = 0; i < padBytes; i++) output.put(0); -// } - -// /* Write out the chunk offset vector. */ -// output.seekp(offsetVectorPos); -// for (Size i = 0; i < obj.chunks.size(); i++) { -// outputWord(output, offsets[i], tmp, wordSize); -// } -// } - -// static Word inputWord(std::istream &input, Size wordSize, vector &tmp) { -// Size n(0), pos(input.tellg()); -// if (tmp.size() < wordSize) tmp.resize(wordSize); - -// /* Seek to the next word-aligned place. */ -// if (input.tellg()%wordSize) { -// input.seekg(input.tellg() + -// streampos((wordSize - input.tellg()%wordSize)%wordSize)); -// } - -// input.read((char*)&tmp[0], wordSize); - -// return readWord(tmp, n, wordSize); -// } - -// static string inputString(std::istream &input) { -// string s; -// char c; - -// while (input && (c = input.get()) != '\0') s += c; - -// return s; -// } - -// Obj *HOFReader::read(std::istream &input) { -// Size wordSize(arch.getWordSize()); -// Obj *o = new Obj(); - -// vector tmp(4); - -// input.read((char*)&tmp[0], 4); -// if (tmp[0] != 'H' || tmp[1] != 'A' || tmp[2] != 'R' || tmp[3] != 'P') { -// cout << "Bad magic number in HOFReader::read().\n"; -// exit(1); -// } - -// string archString(inputString(input)); -// ArchDef fileArch(archString); -// if (fileArch != arch) { -// cout << "File arch " << archString << " does not match reader arch " -// << string(arch) << " in HOFReader::read().\n"; -// exit(1); -// } - -// o->entry = inputWord(input, wordSize, tmp); - -// Size nChunks(inputWord(input, wordSize, tmp)); - -// vector chunkOffsets(nChunks); - -// /* Read in the chunk offsets. */ -// for (Size i = 0; i < nChunks; i++) { -// chunkOffsets[i] = inputWord(input, wordSize, tmp); -// } - -// /* Read in the chunks. */ -// o->chunks.resize(nChunks); -// for (Size i = 0; i < nChunks; i++) { -// input.seekg(chunkOffsets[i]); -// string name(inputString(input)); -// Word alignment(inputWord(input, wordSize, tmp)), -// flags(inputWord(input, wordSize, tmp)), -// hofFlags(inputWord(input, wordSize, tmp)), -// address(inputWord(input, wordSize, tmp)), -// size(inputWord(input, wordSize, tmp)), -// dSize(inputWord(input, wordSize, tmp)), -// nRefs(inputWord(input, wordSize, tmp)); -// DataChunk *dc = new DataChunk(name, alignment, flags); -// if (hofFlags & HOF_GLOBAL) dc->setGlobal(); -// dc->address = address; -// dc->bound = address?true:false; -// dc->contents.resize(dSize); - -// /* Get the refs. */ -// for (Size j = 0; j < nRefs; j++) { -// string rName(inputString(input)); -// Word rFlags(inputWord(input, wordSize, tmp)), -// ibase(inputWord(input, wordSize, tmp)), -// offset(inputWord(input, wordSize, tmp)), -// bits(inputWord(input, wordSize, tmp)); -// OffsetRef *r = -// new OffsetRef(rName, dc->contents, offset, bits, wordSize, rFlags&1, -// ibase); -// dc->refs.push_back(r); -// } - -// D(1, "Reading chunk \"" << name << "\", size " << dSize); - -// /* Get the contents. */ -// input.read((char*)&dc->contents[0], dSize); -// dc->size = size; - -// o->chunks[i] = dc; -// } - -// return o; -// } diff --git a/src/riscv_gpgpu/Makefile b/src/riscv_gpgpu/Makefile index 3aa26578..9af1542d 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=rv32ic -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib +CC_FLAGS = -march=rv32i -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.dump b/src/riscv_gpgpu/gpgpu_test.dump index d9ae8b29..7a62e860 100644 --- a/src/riscv_gpgpu/gpgpu_test.dump +++ b/src/riscv_gpgpu/gpgpu_test.dump @@ -6,682 +6,682 @@ Disassembly of section .text: 80000000 <_start>: 80000000: 7ffff137 lui sp,0x7ffff -80000004: 086000ef jal ra,8000008a
+80000004: 0cc000ef jal ra,800000d0
80000008: 00000073 ecall 8000000c : -8000000c: 8bb6 mv s7,a3 -8000000e: 8c3a mv s8,a4 -80000010: 8cbe mv s9,a5 -80000012: 8d42 mv s10,a6 -80000014: 8f0a mv t5,sp -80000016: 83aa mv t2,a0 +8000000c: 00068b93 mv s7,a3 +80000010: 00070c13 mv s8,a4 +80000014: 00078c93 mv s9,a5 +80000018: 00080d13 mv s10,a6 +8000001c: 00010f13 mv t5,sp +80000020: 00050393 mv t2,a0 -80000018 : -80000018: 4505 li a0,1 +80000024 : +80000024: 00100513 li a0,1 -8000001a : -8000001a: 00755963 bge a0,t2,8000002c +80000028 : +80000028: 00755c63 bge a0,t2,80000040 -8000001e : -8000001e: 80010113 addi sp,sp,-2048 # 7fffe800 -80000022: 832a mv t1,a0 -80000024: 0003506b 0x3506b +8000002c : +8000002c: 80010113 addi sp,sp,-2048 # 7fffe800 +80000030: 00050313 mv t1,a0 +80000034: 0003506b 0x3506b -80000028 : -80000028: 0505 addi a0,a0,1 -8000002a: bfc5 j 8000001a +80000038 : +80000038: 00150513 addi a0,a0,1 +8000003c: fedff06f j 80000028 -8000002c : -8000002c: 817a mv sp,t5 -8000002e: 4501 li a0,0 -80000030: 8fb2 mv t6,a2 -80000032: 8d9e mv s11,t2 -80000034: 01bfe0eb 0x1bfe0eb -80000038: 00000517 auipc a0,0x0 -8000003c: 3a050513 addi a0,a0,928 # 800003d8 -80000040: 0005406b 0x5406b +80000040 : +80000040: 000f0113 mv sp,t5 +80000044: 00000513 li a0,0 +80000048: 00060f93 mv t6,a2 +8000004c: 00038d93 mv s11,t2 +80000050: 01bfe0eb 0x1bfe0eb +80000054: 00000517 auipc a0,0x0 +80000058: 4b850513 addi a0,a0,1208 # 8000050c +8000005c: 0005406b 0x5406b -80000044 : -80000044: 000108b7 lui a7,0x10 -80000048: 00b8a023 sw a1,0(a7) # 10000 -8000004c: 8082 ret +80000060 : +80000060: 000108b7 lui a7,0x10 +80000064: 00b8a023 sw a1,0(a7) # 10000 +80000068: 00008067 ret -8000004e : -8000004e: 00000317 auipc t1,0x0 -80000052: fbe30313 addi t1,t1,-66 # 8000000c -80000056: 0003006b 0x3006b -8000005a: 8082 ret +8000006c : +8000006c: 00000317 auipc t1,0x0 +80000070: fa030313 addi t1,t1,-96 # 8000000c +80000074: 0003006b 0x3006b +80000078: 00008067 ret -8000005c : -8000005c: 1151 addi sp,sp,-12 -8000005e: c006 sw ra,0(sp) -80000060: c22e sw a1,4(sp) +8000007c : +8000007c: ff410113 addi sp,sp,-12 +80000080: 00112023 sw ra,0(sp) +80000084: 00b12223 sw a1,4(sp) -80000062 : -80000062: 00054583 lbu a1,0(a0) -80000066: c581 beqz a1,8000006e -80000068: 3ff1 jal 80000044 -8000006a: 0505 addi a0,a0,1 -8000006c: bfdd j 80000062 +80000088 : +80000088: 00054583 lbu a1,0(a0) +8000008c: 00058863 beqz a1,8000009c +80000090: fd1ff0ef jal ra,80000060 +80000094: 00150513 addi a0,a0,1 +80000098: ff1ff06f j 80000088 -8000006e : -8000006e: 4082 lw ra,0(sp) -80000070: 4592 lw a1,4(sp) -80000072: 0131 addi sp,sp,12 -80000074: 8082 ret +8000009c : +8000009c: 00012083 lw ra,0(sp) +800000a0: 00412583 lw a1,4(sp) +800000a4: 00c10113 addi sp,sp,12 +800000a8: 00008067 ret -80000076 : -80000076: 1151 addi sp,sp,-12 -80000078: c006 sw ra,0(sp) -8000007a: c22e sw a1,4(sp) -8000007c: 03050593 addi a1,a0,48 -80000080: 37d1 jal 80000044 -80000082: 4082 lw ra,0(sp) -80000084: 4592 lw a1,4(sp) -80000086: 0131 addi sp,sp,12 -80000088: 8082 ret +800000ac : +800000ac: ff410113 addi sp,sp,-12 +800000b0: 00112023 sw ra,0(sp) +800000b4: 00b12223 sw a1,4(sp) +800000b8: 03050593 addi a1,a0,48 +800000bc: fa5ff0ef jal ra,80000060 +800000c0: 00012083 lw ra,0(sp) +800000c4: 00412583 lw a1,4(sp) +800000c8: 00c10113 addi sp,sp,12 +800000cc: 00008067 ret -8000008a
: -8000008a: 1101 addi sp,sp,-32 -8000008c: ce06 sw ra,28(sp) -8000008e: cc22 sw s0,24(sp) -80000090: 1000 addi s0,sp,32 -80000092: fe042623 sw zero,-20(s0) -80000096: a815 j 800000ca -80000098: fec42703 lw a4,-20(s0) -8000009c: 87ba mv a5,a4 -8000009e: 078e slli a5,a5,0x3 -800000a0: 8f99 sub a5,a5,a4 -800000a2: 078a slli a5,a5,0x2 -800000a4: 8f99 sub a5,a5,a4 -800000a6: 00479713 slli a4,a5,0x4 -800000aa: 8f1d sub a4,a4,a5 -800000ac: 00271793 slli a5,a4,0x2 -800000b0: 873e mv a4,a5 -800000b2: 810007b7 lui a5,0x81000 -800000b6: 24478793 addi a5,a5,580 # 81000244 -800000ba: 97ba add a5,a5,a4 -800000bc: 853e mv a0,a5 -800000be: 2a91 jal 80000212 -800000c0: fec42783 lw a5,-20(s0) -800000c4: 0785 addi a5,a5,1 -800000c6: fef42623 sw a5,-20(s0) -800000ca: fec42703 lw a4,-20(s0) -800000ce: 479d li a5,7 -800000d0: fce7d4e3 bge a5,a4,80000098 -800000d4: 810007b7 lui a5,0x81000 -800000d8: 1f878793 addi a5,a5,504 # 810001f8 -800000dc: 81000737 lui a4,0x81000 -800000e0: 17870713 addi a4,a4,376 # 81000178 -800000e4: 810006b7 lui a3,0x81000 -800000e8: 13868693 addi a3,a3,312 # 81000138 -800000ec: 80000637 lui a2,0x80000 -800000f0: 17460613 addi a2,a2,372 # 80000174 -800000f4: 45a1 li a1,8 -800000f6: 4509 li a0,2 -800000f8: 2141 jal 80000578 -800000fa: 4509 li a0,2 -800000fc: 2ba1 jal 80000654 -800000fe: 810007b7 lui a5,0x81000 -80000102: 04078513 addi a0,a5,64 # 81000040 -80000106: 3f99 jal 8000005c -80000108: 810007b7 lui a5,0x81000 -8000010c: 05c78513 addi a0,a5,92 # 8100005c -80000110: 37b1 jal 8000005c -80000112: fe042423 sw zero,-24(s0) -80000116: a83d j 80000154 -80000118: fe842783 lw a5,-24(s0) -8000011c: 853e mv a0,a5 -8000011e: 242d jal 80000348 -80000120: 810007b7 lui a5,0x81000 -80000124: 06878513 addi a0,a5,104 # 81000068 -80000128: 3f15 jal 8000005c -8000012a: 810007b7 lui a5,0x81000 -8000012e: fe842703 lw a4,-24(s0) -80000132: 070a slli a4,a4,0x2 -80000134: 1f878793 addi a5,a5,504 # 810001f8 -80000138: 97ba add a5,a5,a4 -8000013a: 439c lw a5,0(a5) -8000013c: 853e mv a0,a5 -8000013e: 2429 jal 80000348 -80000140: 810007b7 lui a5,0x81000 -80000144: 06c78513 addi a0,a5,108 # 8100006c -80000148: 3f11 jal 8000005c -8000014a: fe842783 lw a5,-24(s0) -8000014e: 0785 addi a5,a5,1 -80000150: fef42423 sw a5,-24(s0) -80000154: fe842703 lw a4,-24(s0) -80000158: 47bd li a5,15 -8000015a: fae7dfe3 bge a5,a4,80000118 -8000015e: 810007b7 lui a5,0x81000 -80000162: 07078513 addi a0,a5,112 # 81000070 -80000166: 3ddd jal 8000005c -80000168: 4781 li a5,0 -8000016a: 853e mv a0,a5 -8000016c: 40f2 lw ra,28(sp) -8000016e: 4462 lw s0,24(sp) -80000170: 6105 addi sp,sp,32 -80000172: 8082 ret - -80000174 : -80000174: 7139 addi sp,sp,-64 -80000176: de06 sw ra,60(sp) -80000178: dc22 sw s0,56(sp) -8000017a: 0080 addi s0,sp,64 -8000017c: fca42623 sw a0,-52(s0) -80000180: fcb42423 sw a1,-56(s0) -80000184: 2399 jal 800006ca -80000186: fea42623 sw a0,-20(s0) -8000018a: 2b91 jal 800006de -8000018c: fea42423 sw a0,-24(s0) -80000190: 238d jal 800006f2 -80000192: fea42223 sw a0,-28(s0) -80000196: fc842783 lw a5,-56(s0) -8000019a: 078e slli a5,a5,0x3 -8000019c: fcc42703 lw a4,-52(s0) -800001a0: 97ba add a5,a5,a4 -800001a2: fef42023 sw a5,-32(s0) -800001a6: fe042783 lw a5,-32(s0) -800001aa: 00b7b793 sltiu a5,a5,11 -800001ae: 0017c793 xori a5,a5,1 -800001b2: fcf40fa3 sb a5,-33(s0) -800001b6: fdf44783 lbu a5,-33(s0) -800001ba: 8f3e mv t5,a5 -800001bc: 800007b7 lui a5,0x80000 -800001c0: 20278f93 addi t6,a5,514 # 80000202 -800001c4: 000f206b 0xf206b -800001c8: 01ff707b 0x1ff707b -800001cc: fe042783 lw a5,-32(s0) -800001d0: 078a slli a5,a5,0x2 -800001d2: fec42703 lw a4,-20(s0) -800001d6: 97ba add a5,a5,a4 -800001d8: 4394 lw a3,0(a5) -800001da: fe042783 lw a5,-32(s0) -800001de: 078a slli a5,a5,0x2 +800000d0
: +800000d0: fe010113 addi sp,sp,-32 +800000d4: 00112e23 sw ra,28(sp) +800000d8: 00812c23 sw s0,24(sp) +800000dc: 02010413 addi s0,sp,32 +800000e0: fe042623 sw zero,-20(s0) +800000e4: 04c0006f j 80000130 +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: 97ba add a5,a5,a4 -800001e6: 4398 lw a4,0(a5) -800001e8: fe042783 lw a5,-32(s0) -800001ec: 078a slli a5,a5,0x2 -800001ee: fe442603 lw a2,-28(s0) -800001f2: 97b2 add a5,a5,a2 -800001f4: 9736 add a4,a4,a3 -800001f6: c398 sw a4,0(a5) -800001f8: 800007b7 lui a5,0x80000 -800001fc: 20478e13 addi t3,a5,516 # 80000204 -80000200: 8e02 jr t3 -80000202: 0001 nop -80000204: 0000306b 0x306b -80000208: 0001 nop -8000020a: 50f2 lw ra,60(sp) -8000020c: 5462 lw s0,56(sp) -8000020e: 6121 addi sp,sp,64 -80000210: 8082 ret +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 -80000212 : -80000212: 82aa mv t0,a0 -80000214: 4301 li t1,0 -80000216: 439d li t2,7 -80000218: 0062a023 sw t1,0(t0) -8000021c: 0062a223 sw t1,4(t0) -80000220: 0062a423 sw t1,8(t0) -80000224: 0072a623 sw t2,12(t0) -80000228: 0062a823 sw t1,16(t0) -8000022c: 8082 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 +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 -8000022e : -8000022e: 82aa mv t0,a0 -80000230: 0082a303 lw t1,8(t0) -80000234: 0305 addi t1,t1,1 -80000236: 0062a423 sw t1,8(t0) -8000023a: 01428313 addi t1,t0,20 -8000023e: 0042ae83 lw t4,4(t0) -80000242: 005e9393 slli t2,t4,0x5 -80000246: 931e add t1,t1,t2 -80000248: 0005ae03 lw t3,0(a1) -8000024c: 01c32023 sw t3,0(t1) -80000250: 0045ae03 lw t3,4(a1) -80000254: 01c32223 sw t3,4(t1) -80000258: 0085ae03 lw t3,8(a1) -8000025c: 01c32423 sw t3,8(t1) -80000260: 00c5ae03 lw t3,12(a1) -80000264: 01c32623 sw t3,12(t1) -80000268: 0105ae03 lw t3,16(a1) -8000026c: 01c32823 sw t3,16(t1) -80000270: 0145ae03 lw t3,20(a1) -80000274: 01c32a23 sw t3,20(t1) -80000278: 0185ae03 lw t3,24(a1) -8000027c: 01c32c23 sw t3,24(t1) -80000280: 01c5ae03 lw t3,28(a1) -80000284: 01c32e23 sw t3,28(t1) -80000288: 0e85 addi t4,t4,1 -8000028a: 03200f13 li t5,50 -8000028e: 01ee9463 bne t4,t5,80000296 -80000292: 00000e93 li t4,0 +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 -80000296 : -80000296: 01d2a223 sw t4,4(t0) -8000029a: 8082 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 -8000029c : -8000029c: 82aa mv t0,a0 -8000029e: 0082a303 lw t1,8(t0) -800002a2: 137d addi t1,t1,-1 -800002a4: 0062a423 sw t1,8(t0) -800002a8: 01428313 addi t1,t0,20 -800002ac: 0002ae83 lw t4,0(t0) -800002b0: 03200f93 li t6,50 -800002b4: 8f76 mv t5,t4 -800002b6: 0f05 addi t5,t5,1 -800002b8: 01ff1463 bne t5,t6,800002c0 -800002bc: 00000f13 li t5,0 +80000378 : +80000378: 01d2a223 sw t4,4(t0) +8000037c: 00008067 ret -800002c0 : -800002c0: 01e2a023 sw t5,0(t0) -800002c4: 005e9393 slli t2,t4,0x5 -800002c8: 931e add t1,t1,t2 -800002ca: 00032e03 lw t3,0(t1) -800002ce: 01c5a023 sw t3,0(a1) -800002d2: 00432e03 lw t3,4(t1) -800002d6: 01c5a223 sw t3,4(a1) -800002da: 00832e03 lw t3,8(t1) -800002de: 01c5a423 sw t3,8(a1) -800002e2: 00c32e03 lw t3,12(t1) -800002e6: 01c5a623 sw t3,12(a1) -800002ea: 01032e03 lw t3,16(t1) -800002ee: 01c5a823 sw t3,16(a1) -800002f2: 01432e03 lw t3,20(t1) -800002f6: 01c5aa23 sw t3,20(a1) -800002fa: 01832e03 lw t3,24(t1) -800002fe: 01c5ac23 sw t3,24(a1) -80000302: 01c32e03 lw t3,28(t1) -80000306: 01c5ae23 sw t3,28(a1) -8000030a: 8082 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 -8000030c : -8000030c: 82aa mv t0,a0 -8000030e: 0082a303 lw t1,8(t0) -80000312: 00000513 li a0,0 -80000316: 03200e13 li t3,50 -8000031a: 006e1363 bne t3,t1,80000320 -8000031e: 0505 addi a0,a0,1 +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 -80000320 : -80000320: 8082 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 -80000322 : -80000322: 82aa mv t0,a0 -80000324: 0082a303 lw t1,8(t0) -80000328: 00000513 li a0,0 -8000032c: 00000e13 li t3,0 -80000330: 006e1363 bne t3,t1,80000336 -80000334: 0505 addi a0,a0,1 +80000414 : +80000414: 00008067 ret -80000336 : -80000336: 8082 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 -80000338 : -80000338: 82aa mv t0,a0 -8000033a: 00c2a303 lw t1,12(t0) -8000033e: 0102a383 lw t2,16(t0) -80000342: 0063b533 sltu a0,t2,t1 -80000346: 8082 ret +80000430 : +80000430: 00008067 ret -80000348 : -80000348: 7179 addi sp,sp,-48 -8000034a: d606 sw ra,44(sp) -8000034c: d422 sw s0,40(sp) -8000034e: 1800 addi s0,sp,48 -80000350: fca42e23 sw a0,-36(s0) -80000354: fdc42703 lw a4,-36(s0) -80000358: 47bd li a5,15 -8000035a: 00e7ee63 bltu a5,a4,80000376 -8000035e: 810007b7 lui a5,0x81000 -80000362: fdc42703 lw a4,-36(s0) -80000366: 070a slli a4,a4,0x2 -80000368: 1b878793 addi a5,a5,440 # 810001b8 -8000036c: 97ba add a5,a5,a4 -8000036e: 439c lw a5,0(a5) -80000370: 853e mv a0,a5 -80000372: 31ed jal 8000005c -80000374: a8b1 j 800003d0 -80000376: 02000793 li a5,32 -8000037a: fef42623 sw a5,-20(s0) -8000037e: fe0405a3 sb zero,-21(s0) -80000382: fec42783 lw a5,-20(s0) -80000386: 17f1 addi a5,a5,-4 -80000388: fdc42703 lw a4,-36(s0) -8000038c: 00f757b3 srl a5,a4,a5 -80000390: 8bbd andi a5,a5,15 -80000392: fef42223 sw a5,-28(s0) -80000396: fe442783 lw a5,-28(s0) -8000039a: c781 beqz a5,800003a2 -8000039c: 4785 li a5,1 -8000039e: fef405a3 sb a5,-21(s0) -800003a2: feb44783 lbu a5,-21(s0) -800003a6: cf81 beqz a5,800003be -800003a8: 810007b7 lui a5,0x81000 -800003ac: fe442703 lw a4,-28(s0) -800003b0: 070a slli a4,a4,0x2 -800003b2: 1b878793 addi a5,a5,440 # 810001b8 -800003b6: 97ba add a5,a5,a4 -800003b8: 439c lw a5,0(a5) -800003ba: 853e mv a0,a5 -800003bc: 3145 jal 8000005c -800003be: fec42783 lw a5,-20(s0) -800003c2: 17f1 addi a5,a5,-4 -800003c4: fef42623 sw a5,-20(s0) -800003c8: fec42783 lw a5,-20(s0) -800003cc: faf04be3 bgtz a5,80000382 -800003d0: 50b2 lw ra,44(sp) -800003d2: 5422 lw s0,40(sp) -800003d4: 6145 addi sp,sp,48 -800003d6: 8082 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 -800003d8 : -800003d8: 7179 addi sp,sp,-48 -800003da: d606 sw ra,44(sp) -800003dc: d422 sw s0,40(sp) -800003de: d26a sw s10,36(sp) -800003e0: 1800 addi s0,sp,48 -800003e2: 876a mv a4,s10 -800003e4: 87ba mv a5,a4 -800003e6: 078e slli a5,a5,0x3 -800003e8: 8f99 sub a5,a5,a4 -800003ea: 078a slli a5,a5,0x2 -800003ec: 8f99 sub a5,a5,a4 -800003ee: 00479713 slli a4,a5,0x4 -800003f2: 8f1d sub a4,a4,a5 -800003f4: 00271793 slli a5,a4,0x2 -800003f8: 873e mv a4,a5 -800003fa: 810007b7 lui a5,0x81000 -800003fe: 24478793 addi a5,a5,580 # 81000244 -80000402: 97ba add a5,a5,a4 -80000404: 853e mv a0,a5 -80000406: 3f31 jal 80000322 -80000408: 87aa mv a5,a0 -8000040a: cb8d beqz a5,8000043c -8000040c: 810007b7 lui a5,0x81000 -80000410: 0d478513 addi a0,a5,212 # 810000d4 -80000414: 31a1 jal 8000005c -80000416: 87ea mv a5,s10 -80000418: 853e mv a0,a5 -8000041a: 373d jal 80000348 -8000041c: 810007b7 lui a5,0x81000 -80000420: 0dc78513 addi a0,a5,220 # 810000dc -80000424: 3925 jal 8000005c -80000426: 876a mv a4,s10 -80000428: 810037b7 lui a5,0x81003 -8000042c: 4e478793 addi a5,a5,1252 # 810034e4 -80000430: 97ba add a5,a5,a4 -80000432: 4705 li a4,1 -80000434: 00e78023 sb a4,0(a5) -80000438: 00000073 ecall -8000043c: 876a mv a4,s10 -8000043e: 87ba mv a5,a4 -80000440: 078e slli a5,a5,0x3 -80000442: 8f99 sub a5,a5,a4 -80000444: 078a slli a5,a5,0x2 -80000446: 8f99 sub a5,a5,a4 -80000448: 00479713 slli a4,a5,0x4 -8000044c: 8f1d sub a4,a4,a5 -8000044e: 00271793 slli a5,a4,0x2 -80000452: 873e mv a4,a5 -80000454: 810007b7 lui a5,0x81000 -80000458: 24478793 addi a5,a5,580 # 81000244 -8000045c: 97ba add a5,a5,a4 -8000045e: fd040713 addi a4,s0,-48 -80000462: 85ba mv a1,a4 -80000464: 853e mv a0,a5 -80000466: 3d1d jal 8000029c -80000468: fd842783 lw a5,-40(s0) -8000046c: 813e mv sp,a5 -8000046e: fd442503 lw a0,-44(s0) -80000472: fd042583 lw a1,-48(s0) -80000476: fdc42603 lw a2,-36(s0) -8000047a: fe042683 lw a3,-32(s0) -8000047e: fe442703 lw a4,-28(s0) -80000482: fe842783 lw a5,-24(s0) -80000486: fec42803 lw a6,-20(s0) -8000048a: 3649 jal 8000000c -8000048c: 00000073 ecall -80000490: 0001 nop -80000492: 50b2 lw ra,44(sp) -80000494: 5422 lw s0,40(sp) -80000496: 5d12 lw s10,36(sp) -80000498: 6145 addi sp,sp,48 -8000049a: 8082 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 -8000049c : -8000049c: 7139 addi sp,sp,-64 -8000049e: de06 sw ra,60(sp) -800004a0: dc22 sw s0,56(sp) -800004a2: 0080 addi s0,sp,64 -800004a4: 898a mv s3,sp -800004a6: fe042623 sw zero,-20(s0) -800004aa: a069 j 80000534 -800004ac: fec42703 lw a4,-20(s0) -800004b0: 87ba mv a5,a4 -800004b2: 078e slli a5,a5,0x3 -800004b4: 8f99 sub a5,a5,a4 -800004b6: 078a slli a5,a5,0x2 -800004b8: 8f99 sub a5,a5,a4 -800004ba: 00479713 slli a4,a5,0x4 -800004be: 8f1d sub a4,a4,a5 -800004c0: 00271793 slli a5,a4,0x2 -800004c4: 873e mv a4,a5 -800004c6: 810007b7 lui a5,0x81000 -800004ca: 24478793 addi a5,a5,580 # 81000244 -800004ce: 97ba add a5,a5,a4 -800004d0: 853e mv a0,a5 -800004d2: 3d81 jal 80000322 -800004d4: 87aa mv a5,a0 -800004d6: ebb1 bnez a5,8000052a -800004d8: fec42703 lw a4,-20(s0) -800004dc: 87ba mv a5,a4 -800004de: 078e slli a5,a5,0x3 -800004e0: 8f99 sub a5,a5,a4 -800004e2: 078a slli a5,a5,0x2 -800004e4: 8f99 sub a5,a5,a4 -800004e6: 00479713 slli a4,a5,0x4 -800004ea: 8f1d sub a4,a4,a5 -800004ec: 00271793 slli a5,a4,0x2 -800004f0: 873e mv a4,a5 -800004f2: 810007b7 lui a5,0x81000 -800004f6: 24478793 addi a5,a5,580 # 81000244 -800004fa: 97ba add a5,a5,a4 -800004fc: fcc40713 addi a4,s0,-52 -80000500: 85ba mv a1,a4 -80000502: 853e mv a0,a5 -80000504: 3b61 jal 8000029c -80000506: fd442783 lw a5,-44(s0) -8000050a: 813e mv sp,a5 -8000050c: fd042503 lw a0,-48(s0) -80000510: fcc42583 lw a1,-52(s0) -80000514: fd842603 lw a2,-40(s0) -80000518: fdc42683 lw a3,-36(s0) -8000051c: fe042703 lw a4,-32(s0) -80000520: fe442783 lw a5,-28(s0) -80000524: fe842803 lw a6,-24(s0) -80000528: 361d jal 8000004e -8000052a: fec42783 lw a5,-20(s0) -8000052e: 0785 addi a5,a5,1 -80000530: fef42623 sw a5,-20(s0) -80000534: fec42703 lw a4,-20(s0) -80000538: 4799 li a5,6 -8000053a: f6e7d9e3 bge a5,a4,800004ac -8000053e: 814e mv sp,s3 -80000540: 0001 nop -80000542: 50f2 lw ra,60(sp) -80000544: 5462 lw s0,56(sp) -80000546: 6121 addi sp,sp,64 -80000548: 8082 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 -8000054a : -8000054a: 7179 addi sp,sp,-48 -8000054c: d622 sw s0,44(sp) -8000054e: 1800 addi s0,sp,48 -80000550: fca42e23 sw a0,-36(s0) -80000554: fe042623 sw zero,-20(s0) -80000558: a031 j 80000564 -8000055a: fec42783 lw a5,-20(s0) -8000055e: 0785 addi a5,a5,1 -80000560: fef42623 sw a5,-20(s0) -80000564: fec42703 lw a4,-20(s0) -80000568: fdc42783 lw a5,-36(s0) -8000056c: fef747e3 blt a4,a5,8000055a -80000570: 0001 nop -80000572: 5432 lw s0,44(sp) -80000574: 6145 addi sp,sp,48 -80000576: 8082 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 -80000578 : -80000578: 711d addi sp,sp,-96 -8000057a: ce86 sw ra,92(sp) -8000057c: cca2 sw s0,88(sp) -8000057e: 1080 addi s0,sp,96 -80000580: faa42e23 sw a0,-68(s0) -80000584: fab42c23 sw a1,-72(s0) -80000588: fac42a23 sw a2,-76(s0) -8000058c: fad42823 sw a3,-80(s0) -80000590: fae42623 sw a4,-84(s0) -80000594: faf42423 sw a5,-88(s0) -80000598: 00010913 mv s2,sp -8000059c: fe042623 sw zero,-20(s0) -800005a0: fe042423 sw zero,-24(s0) -800005a4: a851 j 80000638 -800005a6: 79c1 lui s3,0xffff0 -800005a8: 914e add sp,sp,s3 -800005aa: fe842783 lw a5,-24(s0) -800005ae: fcf42423 sw a5,-56(s0) -800005b2: fb842783 lw a5,-72(s0) -800005b6: fcf42623 sw a5,-52(s0) -800005ba: 878a mv a5,sp -800005bc: fcf42823 sw a5,-48(s0) -800005c0: fb442783 lw a5,-76(s0) -800005c4: fcf42a23 sw a5,-44(s0) -800005c8: fb042783 lw a5,-80(s0) -800005cc: fcf42c23 sw a5,-40(s0) -800005d0: fac42783 lw a5,-84(s0) -800005d4: fcf42e23 sw a5,-36(s0) -800005d8: fa842783 lw a5,-88(s0) -800005dc: fef42023 sw a5,-32(s0) -800005e0: fec42783 lw a5,-20(s0) -800005e4: fef42223 sw a5,-28(s0) -800005e8: fec42703 lw a4,-20(s0) -800005ec: 87ba mv a5,a4 -800005ee: 078e slli a5,a5,0x3 -800005f0: 8f99 sub a5,a5,a4 -800005f2: 078a slli a5,a5,0x2 -800005f4: 8f99 sub a5,a5,a4 -800005f6: 00479713 slli a4,a5,0x4 -800005fa: 8f1d sub a4,a4,a5 -800005fc: 00271793 slli a5,a4,0x2 -80000600: 873e mv a4,a5 -80000602: 810007b7 lui a5,0x81000 -80000606: 24478793 addi a5,a5,580 # 81000244 -8000060a: 97ba add a5,a5,a4 -8000060c: fc840713 addi a4,s0,-56 -80000610: 85ba mv a1,a4 -80000612: 853e mv a0,a5 -80000614: 3929 jal 8000022e -80000616: fec42783 lw a5,-20(s0) -8000061a: 0785 addi a5,a5,1 -8000061c: fef42623 sw a5,-20(s0) -80000620: fec42703 lw a4,-20(s0) -80000624: 4799 li a5,6 -80000626: 00e7d463 bge a5,a4,8000062e -8000062a: fe042623 sw zero,-20(s0) -8000062e: fe842783 lw a5,-24(s0) -80000632: 0785 addi a5,a5,1 -80000634: fef42423 sw a5,-24(s0) -80000638: fe842703 lw a4,-24(s0) -8000063c: fbc42783 lw a5,-68(s0) -80000640: f6f763e3 bltu a4,a5,800005a6 -80000644: 00090113 mv sp,s2 -80000648: 3d91 jal 8000049c -8000064a: 0001 nop -8000064c: 40f6 lw ra,92(sp) -8000064e: 4466 lw s0,88(sp) -80000650: 6125 addi sp,sp,96 -80000652: 8082 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 -80000654 : -80000654: 7179 addi sp,sp,-48 -80000656: d606 sw ra,44(sp) -80000658: d422 sw s0,40(sp) -8000065a: 1800 addi s0,sp,48 -8000065c: fca42e23 sw a0,-36(s0) -80000660: 810007b7 lui a5,0x81000 -80000664: 0e078513 addi a0,a5,224 # 810000e0 -80000668: 3ad5 jal 8000005c -8000066a: fe0407a3 sb zero,-17(s0) -8000066e: a091 j 800006b2 -80000670: 4785 li a5,1 -80000672: fef407a3 sb a5,-17(s0) -80000676: fe042423 sw zero,-24(s0) -8000067a: a035 j 800006a6 -8000067c: fef44783 lbu a5,-17(s0) -80000680: 81003737 lui a4,0x81003 -80000684: 4e470693 addi a3,a4,1252 # 810034e4 -80000688: fe842703 lw a4,-24(s0) -8000068c: 9736 add a4,a4,a3 -8000068e: 00074703 lbu a4,0(a4) -80000692: 8ff9 and a5,a5,a4 -80000694: 00f037b3 snez a5,a5 -80000698: fef407a3 sb a5,-17(s0) -8000069c: fe842783 lw a5,-24(s0) -800006a0: 0785 addi a5,a5,1 -800006a2: fef42423 sw a5,-24(s0) -800006a6: fe842783 lw a5,-24(s0) -800006aa: fdc42703 lw a4,-36(s0) -800006ae: fce7e7e3 bltu a5,a4,8000067c -800006b2: fef44783 lbu a5,-17(s0) -800006b6: 0017c793 xori a5,a5,1 -800006ba: 0ff7f793 andi a5,a5,255 -800006be: fbcd bnez a5,80000670 -800006c0: 0001 nop -800006c2: 50b2 lw ra,44(sp) -800006c4: 5422 lw s0,40(sp) -800006c6: 6145 addi sp,sp,48 -800006c8: 8082 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 +80000878: 00008067 ret -800006ca : -800006ca: 1141 addi sp,sp,-16 -800006cc: c622 sw s0,12(sp) -800006ce: c45e sw s7,8(sp) -800006d0: 0800 addi s0,sp,16 -800006d2: 87de mv a5,s7 -800006d4: 853e mv a0,a5 -800006d6: 4432 lw s0,12(sp) -800006d8: 4ba2 lw s7,8(sp) -800006da: 0141 addi sp,sp,16 -800006dc: 8082 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 -800006de : -800006de: 1141 addi sp,sp,-16 -800006e0: c622 sw s0,12(sp) -800006e2: c462 sw s8,8(sp) -800006e4: 0800 addi s0,sp,16 -800006e6: 87e2 mv a5,s8 -800006e8: 853e mv a0,a5 -800006ea: 4432 lw s0,12(sp) -800006ec: 4c22 lw s8,8(sp) -800006ee: 0141 addi sp,sp,16 -800006f0: 8082 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 -800006f2 : -800006f2: 1141 addi sp,sp,-16 -800006f4: c622 sw s0,12(sp) -800006f6: c466 sw s9,8(sp) -800006f8: 0800 addi s0,sp,16 -800006fa: 87e6 mv a5,s9 -800006fc: 853e mv a0,a5 -800006fe: 4432 lw s0,12(sp) -80000700: 4ca2 lw s9,8(sp) -80000702: 0141 addi sp,sp,16 -80000704: 8082 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 Disassembly of section .rodata: @@ -708,7 +708,7 @@ 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 @@ -779,7 +779,7 @@ 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 diff --git a/src/riscv_gpgpu/gpgpu_test.elf b/src/riscv_gpgpu/gpgpu_test.elf index 1aea3097b618eee76dd12ecc29a61d10cd6b5b3e..b1f80c8c421b5b470adcd9f9d552bb322371302b 100755 GIT binary patch literal 10540 zcmeHNeQZcDAYq|ZH#syRMXOjv%aE#S#$WkpOzhYW zU#nCb2hwS*ta?cB$F#5ob!bAY6-=Shq{1+w(xz#e(6nk>*_LRTI=YxOTA1<2e&@dD z#DO7Anbg00rQ>sd_ndp~Ip>~xpPjtdyPw}CNfMQsg+3({CE78VZZah8BkgOS5}c)E0HeSNVTmd|0^S; zN>V}v9(+N@*h3V~+$^Y4E&7;SYbX6XGX4Ee?@RT-s_n>E2i-QBtddAOeTn)KMD;Sp zWjQ-YvcRg;S=1bBNL%|ZrMhk8f5S$znTEV!yP=qJNR(RFiFL2sr?1;=@@&SFy4wf~zNcs7;x7>-9~fjwv*$P*NZ3 zab8g7Nj;*_EV&;|@!YX`(i-OqhMfpa{ca{}=#DjXV2-Mc)lb?n_vlfz!%hj+ZhuU- zC6EUP+t_1p8s<5$YlZI_qkr8tn;D67eoFx5vJx$ck z7I%QPR%(L~XH- zJaHI$s*tIvty1dzR?_uvP@5bh`MeFWU6thX-KbaQM@VxrzlOSCZj-cTA(yoELM~}7 zLM~~ptCIfa7jd2(vj4x)z)#hpZk)T(u44uPaJwE#{p5 zi?ra6O9s9s$*yN%i+KuuGrx+sn9GuOR>&po$3iY?=Y(9+&R<))HlNp3@U3nL_4?4# zdr4*&n&;Z{PtRD4`c3D}`h8?c{bt7B zN9`-9Nu1ZY!i3F=8cL&vuNT?Ih28U{&!e{1a&2`L{6}$)mDMz11Maz4@E=x8`(35; zaj*UNO7_@3_ov($+#Odes1pn7L^f-GAqH*j4`kH8tST$9)-vvmOv5c*!JT$ku^MNy zXC>~ocXikkXExIy&a`^uI>yI;!s|?Sh`VP8=SD?*T4ILyUS5_DiZ!p>%=;m8^Fy4| zyqZ)q&aE!H#6kjRbvWM_GPmfQ_`HSTtCzfukM zX?gc+X8c2ur&Ef3SvHh(ZZS^JFHj$5oL0n{&dH6Vh%=p+aj$Ug$jzgObNr-H59N3I z9-8`S=AUY^`oG>Gs1el0Vr`po;|}9GU9Yrc`y8mF_Gb1tizIW?XKi4~L8#bTSZ5$lW=AkTr{MGfb41-Wl#+;vx5 z&)j-fYhez1E}@q-?&5TT&yBpC{ZVkYFVs-OdDvbOtFG)J|BV?@1MFYdpa3Wc>IFUdp!PYUZQFNr zKJR!LJ))-_MBI6hx;ZX%|6iX1;h|t@J+Ci35_iPIj{V+&xT7~5b+A+{leFU9gep)C z2(Kk1>p%~K9tFYOq!ZK(Y5~EgByy8PK9bLX@JfSt&tbV7)5UxXxD0|X;{6GJM*=_1 z@s;E5P9+tpwqxBjKkYoq!LgK;HwM2Au(&1)T%E1G)&h1o|21GAIrD0Q5`H zuR%S}KKrzzxo5|&#~oW-n_LL*fi1xj*?6miyGaAH=R|iFFh>C_mE;_eXovYzMs%F3 zQnS+S;#UBicz?tglju2gn#=G`V0RgQ1sHpg07H{R{b4^60s`Z^BE3Gq}m-U2T9`w8@(sip*SN}tD! ze}iu^=dVG$cY&Y7dTCQ`!v^)^Zz^@*tiJ{vb(erx;0EAk$lWGh2V7TXe%Rxwg1@!pOuP^H zwJJ)SGVv&Ipv=GT0w>J;^Zf4v<18fH;EX50Un{d8fSm&i{>bzWG{bQB43dDB7Kn&PdpflyZqE2JP;3iX|H!+$Pw>KJznf;gg zF%*bVEEEhz#Jr8MxR^IQ5*!JNm5!p< zIdSsD;@)VS_`%@8gTW*6#BQ}k4Y!P`fuP_bDdueCHWm)i{#eAje~6;Nn7=<57zqVE z`-R)aJnug5K*;M0nX#1o*ftUh(Xi=OaLBMtuGqo7ajy?N9yNG>sTaqdkSiJvc;jAj z8K1sbj9mWk-n~J@@jtgmpox+*-oxWMUTwU$S2AEVJCB)q76T{AA?`_2YCNkLJPu-e zGKlZdI}URIj9bZGEBaL+p@;Ky2MgR;yeJp++M&bt%!koo)>{KyYAh>}>6;MMtVJ*| p&Uf(_K)fzO6VFdxv(%2QBg(P?vz5BMM!DY6CZaEwl)y`R{{cr2k%#~Q delta 2078 zcma)-e@s(X6vxl)>+3@!V0pTd4J`Jx;E#=1%s|~J71}+2g#mMMCe93+kxUXdwn=o$ z(w5RSL!sg`t0ZVZ_=6E+0=QusozCG{Hs>-*?ZsdB<)g8{BXz)B8@^M*#56-ZlHa-B;c=H#`tv-JY$x zfG5PaEYMKJ0Lz{~^NF9hhr&nNZvS^$JMlhlgDvdnKKXnQ?rBu2wU%LSM($orb9$34fr zcJUl{&vF{V2RVIbnKBz=2TKI2UM}qq6tu{W;7eA;9x^OUdN636%SoY-IU4Dza0HjC z>thCE8I8aVt#rc{`Lr1OGyYJ`&s{I|i;mzuXPt|+*EaiBHyXw**L)!4_ay}DiA1M> zGr42AVC|FJ1i{iLW3og$hsqPth*Xu8z1xOhy)7saw~O_qmhFZ zDQZDFl%jl>JQOL89QvNd^6g@tuAM-`3IGE4s_Hf`Mkxc$q~dUeG?BF+hXT{v3@jt` z)d3$UCxPSTAW7R{kt8kQo#nv{J~NN;9K1uM3;^NiC9Ied@)oD&I9RUUVDYG6kpi3YJMUx@7-YQ0!%K zE}oG6zbdI*N}bhIZo3jpQ_)#$B=6Kf^ z(_jKrYu4LTZL0NJzo6IYy>2|TXSh!O(t*(6?Pu}jIc!;!QTqy>EJJl%eJGQ(r&WaKT9SH~u6}aIPSJBYju(`+jrLxn*L2J?b)P45 zpre$)eP_MP_P7g_Cs2yXW&FOT*URbUj&5u(ZW7h$<(Iny;-p+cD{K%e8BARqVMGod zgojHefO^etM`sLu@OV5yqogqtNK;dpzf3CyrR7{}wEVDr6w=1Ai;7%FH?Ad$tqyHB z(Uw!>vTRBj>(Tg+;+V7z`X8nZ<@t2A*#JK56Z{ZZhyTxOxCZ$}4R1qUq~UtxB^rJo zxlY3$BJY%LSiD7F>SlKtN9$P)-$2e|X4n5lE@q?yLZx@y0KNr?St#xSj;jdxoj4lt zT{4a1It<&7BVA_+z-|_N*Hktl&r`+Fbu;n?TrX7DZOA`q^4pQKR9V!&9KYbwBv_9Q z9~1B$Q4_q0Y*BU701xtij|J-CUF0UI$7-(b(u41~8r6i>&A4ro$}PzEG&1%hcWGoC zL2gAAw^aXLH9zR(G90BF_ZrRB2}4F diff --git a/src/riscv_gpgpu/gpgpu_test.hex b/src/riscv_gpgpu/gpgpu_test.hex index 1ed57169..abfda838 100644 --- a/src/riscv_gpgpu/gpgpu_test.hex +++ b/src/riscv_gpgpu/gpgpu_test.hex @@ -1,117 +1,157 @@ :0200000480007A -:1000000037F1FF7FEF00600873000000B68B3A8C79 -:10001000BE8C428D0A8FAA83054563597500130172 -:1000200001802A836B5003000505C5BF7A81014515 -:10003000B28F9E8DEBE0BF01170500001305053A56 -:100040006B400500B708010023A0B80082801703A9 -:1000500000001303E3FB6B0003008280511106C014 -:100060002EC28345050081C5F13F0505DDBF8240F5 -:10007000924531018280511106C02EC293050503BD -:10008000D1378240924531018280011106CE22CCC7 -:100090000010232604FE15A80327C4FEBA878E0786 -:1000A000998F8A07998F139747001D8F9317270001 -:1000B0003E87B707008193874724BA973E85912AE8 -:1000C0008327C4FE85072326F4FE0327C4FE9D472D -:1000D000E3D4E7FCB70700819387871F37070081C8 -:1000E00013078717B70600819386861337060080AB -:1000F00013064617A145094541210945A12BB7071C -:10010000008113850704993FB70700811385C70550 -:10011000B137232404FE3DA8832784FE3E852D2489 -:10012000B707008113858706153FB70700810327AE -:1001300084FE0A079387871FBA979C433E8529242C -:10014000B70700811385C706113F832784FE850703 -:100150002324F4FE032784FEBD47E3DFE7FAB70755 -:10016000008113850707DD3D81473E85F2406244EB -:1001700005618280397106DE22DC80002326A4FC22 -:100180002324B4FC99232326A4FE912B2324A4FE2C -:100190008D232322A4FE832784FC8E070327C4FC1F -:1001A000BA972320F4FE832704FE93B7B70093C7C2 -:1001B0001700A30FF4FC8347F4FD3E8FB7070080C0 -:1001C000938F27206B200F007B70FF01832704FE95 -:1001D0008A070327C4FEBA979443832704FE8A073D -:1001E000032784FEBA979843832704FE8A070326D1 -:1001F00044FEB297369798C3B7070080138E472006 -:10020000028E01006B3000000100F2506254216147 -:100210008280AA8201439D4323A0620023A2620040 -:1002200023A4620023A6720023A862008280AA820F -:1002300003A38200050323A462001383420183AE5B -:10024000420093935E001E9303AE05002320C3017A -:1002500003AE45002322C30103AE85002324C3015E -:1002600003AEC5002326C30103AE05012328C30145 -:1002700003AE4501232AC30103AE8501232CC3012C -:1002800003AEC501232EC301850E130F2003639413 -:10029000EE01930E000023A2D2018280AA8203A362 -:1002A00082007D1323A462001383420183AE020007 -:1002B000930F2003768F050F6314FF01130F0000C7 -:1002C00023A0E20193935E001E93032E030023A05C -:1002D000C501032E430023A2C501032E830023A4DE -:1002E000C501032EC30023A6C501032E030123A8C5 -:1002F000C501032E430123AAC501032E830123ACAC -:10030000C501032EC30123AEC5018280AA8203A3C7 -:10031000820013050000130E200363136E00050511 -:100320008280AA8203A3820013050000130E00003E -:1003300063136E0005058280AA8203A3C20083A313 -:10034000020133B563008280797106D622D4001889 -:10035000232EA4FC0327C4FDBD4763EEE700B707C7 -:1003600000810327C4FD0A079387871BBA979C4324 -:100370003E85ED31B1A8930700022326F4FEA305C4 -:1003800004FE8327C4FEF1170327C4FDB357F7000B -:10039000BD8B2322F4FE832744FE81C78547A30536 -:1003A000F4FE8347B4FE81CFB7070081032744FEE4 -:1003B0000A079387871BBA979C433E85453183275D -:1003C000C4FEF1172326F4FE8327C4FEE34BF0FAA4 -:1003D000B250225445618280797106D622D46AD205 -:1003E00000186A87BA878E07998F8A07998F1397A3 -:1003F00047001D8F931727003E87B707008193871B -:100400004724BA973E85313FAA878DCBB707008135 -:100410001385470DA131EA873E853D37B707008137 -:100420001385C70D25396A87B73700819387474EF3 -:10043000BA9705472380E700730000006A87BA87F0 -:100440008E07998F8A07998F139747001D8F9317EF -:1004500027003E87B707008193874724BA97130781 -:1004600004FDBA853E851D3D832784FD3E8103251D -:1004700044FD832504FD0326C4FD832604FE0327D3 -:1004800044FE832784FE0328C4FE4936730000001F -:100490000100B2502254125D45618280397106DE3E -:1004A00022DC80008A89232604FE69A00327C4FE7B -:1004B000BA878E07998F8A07998F139747001D8FE8 -:1004C000931727003E87B707008193874724BA9781 -:1004D0003E85813DAA87B1EB0327C4FEBA878E070C -:1004E000998F8A07998F139747001D8F93172700BD -:1004F0003E87B707008193874724BA971307C4FC48 -:10050000BA853E85613B832744FD3E81032504FD7A -:100510008325C4FC032684FD8326C4FD032704FE33 -:10052000832744FE032884FE1D368327C4FE8507E7 -:100530002326F4FE0327C4FE9947E3D9E7F64E814C -:100540000100F250625421618280797122D6001834 -:10055000232EA4FC232604FE31A08327C4FE850796 -:100560002326F4FE0327C4FE8327C4FDE347F7FEDA -:1005700001003254456182801D7186CEA2CC80106C -:10058000232EA4FA232CB4FA232AC4FA2328D4FA5B -:100590002326E4FA2324F4FA13090100232604FE97 -:1005A000232404FE51A8C1794E91832784FE23247D -:1005B000F4FC832784FB2326F4FC8A872328F4FC9D -:1005C000832744FB232AF4FC832704FB232CF4FC1D -:1005D0008327C4FA232EF4FC832784FA2320F4FE15 -:1005E0008327C4FE2322F4FE0327C4FEBA878E07A6 -:1005F000998F8A07998F139747001D8F93172700AC -:100600003E87B707008193874724BA97130784FC76 -:10061000BA853E8529398327C4FE85072326F4FE43 -:100620000327C4FE994763D4E700232604FE8327EB -:1006300084FE85072324F4FE032784FE8327C4FB5E -:10064000E363F7F613010900913D0100F6406644AB -:1006500025618280797106D622D40018232EA4FC4D -:10066000B70700811385070ED53AA30704FE91A0B2 -:100670008547A307F4FE232404FE35A08347F4FE38 -:10068000373700819306474E032784FE369703478A -:100690000700F98FB337F000A307F4FE832784FE29 -:1006A00085072324F4FE832784FE0327C4FDE3E7A4 -:1006B000E7FC8347F4FE93C7170093F7F70FCDFBD2 -:1006C0000100B250225445618280411122C65EC4AD -:1006D0000008DE873E853244A24B410182804111F1 -:1006E00022C662C40008E2873E853244224C4101A2 -:1006F0008280411122C666C40008E6873E853244E6 -:06070000A24C41018280C1 +:1000000037F1FF7FEF00C00C73000000938B0600F8 +:10001000130C0700938C0700130D0800130F010049 +:100020009303050013051000635C75001301018044 +:10003000130305006B500300130515006FF0DFFE7E +:1000400013010F0013050000930F0600938D0300AA +:10005000EBE0BF01170500001305854B6B40050061 +:10006000B708010023A0B800678000001703000054 +:10007000130303FA6B00030067800000130141FFC4 +:10008000232011002322B100834505006388050069 +:10009000EFF01FFD130515006FF01FFF8320010017 +:1000A000832541001301C10067800000130141FF57 +: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 :02000004810079 :10000000300000003100000032000000330000002A :10001000340000003500000036000000370000000A diff --git a/src/scanner.lex b/src/scanner.lex deleted file mode 100644 index c64d8b4c..00000000 --- a/src/scanner.lex +++ /dev/null @@ -1,142 +0,0 @@ -/******************************************************************************* - HARPtools by Chad D. Kersey, Summer 2011 -*******************************************************************************/ -%option c++ -%option noyywrap - -%{ -#include -#include -#include -#include -#include -#include -#include - -#include "include/asm-tokens.h" -#include "include/harpfloat.h" - -extern int lexerFloatBytes; -static int64_t read_number(const char *s) { - while (!isdigit(*s) && *s != '-' && *s != '+') s++; - - if (strchr(s, 'f') && !strchr(s, 'x') || strchr(s, '.')) { - double d; - sscanf(s, "%lf", &d); - return Harp::Word_u(Harp::Float(d, lexerFloatBytes)); - } else { - long long u; - sscanf(s, "%lli", &u); - return u; - } -} - - -static std::string label_name(const char *cs) { - return std::string(cs, strlen(cs)-1); -} - -struct rval_t { std::string s; uint64_t u; } yylval; -unsigned yyline(1); - -using namespace HarpTools; - -%} - -%start DEFARGS PERMARGS WORDARGS STRINGARGS ALIGNARGS EMPTYARGS INSTARGS -%start EATCOLON - -sym [A-Za-z_.][A-Za-z0-9_.]* -decnum [1-9][0-9]* -hexnum 0x[0-9a-f]+ -octnum 0[0-7]* -floatnum ([0-9]+f|[0-9]*\.[0-9]+) -num [+-]?({decnum}|{hexnum}|{octnum}|{floatnum}) -space [ \t]* -peoperator ("+"|"-"|"*"|"/"|"%"|"&"|"|"|"^"|"<<"|">>"|"`") -parenexp "("({num}|{sym}|{peoperator}|{space}|"("|")")+")" -endl \r?\n - -%% -\/\*([^*]|\*[^/]|{endl})*\*\/ { - /* Ignore comments but keep line count consistent. */ - for (const char *c = YYText(); *c; c++) if (*c == '\n') yyline++; -} -to -\.def { BEGIN DEFARGS; return ASM_T_DIR_DEF; } -\.perm { BEGIN PERMARGS; return ASM_T_DIR_PERM; } -\.byte { BEGIN WORDARGS; return ASM_T_DIR_BYTE; } -\.word { BEGIN WORDARGS; return ASM_T_DIR_WORD; } -\.space { BEGIN WORDARGS; return ASM_T_DIR_SPACE; } -\.string { BEGIN STRINGARGS; return ASM_T_DIR_STRING; } -\.align { BEGIN ALIGNARGS; return ASM_T_DIR_ALIGN; } -\.entry { BEGIN EMPTYARGS; return ASM_T_DIR_ENTRY; } -\.global { BEGIN EMPTYARGS; return ASM_T_DIR_GLOBAL; } - -@p{num}{space}\? { yylval.u = read_number(YYText()); - return ASM_T_PRED; } -{sym}/: { BEGIN EATCOLON; - yylval.s = std::string(YYText()); - return ASM_T_LABEL; } -{sym} { BEGIN INSTARGS; - yylval.s = std::string(YYText()); - return ASM_T_INST; } -; {} -{endl} {yyline++;} - -: { BEGIN INITIAL; } - - -@p{num}{space}[,;]? { yylval.u = read_number(YYText()); - return ASM_T_PREG; } -%r{num}{space}[,;]? { yylval.u = read_number(YYText()); - return ASM_T_REG; } -%ra{space}[,;]? { return ASM_T_REG_RA; } -%sp{space}[,;]? { return ASM_T_REG_SP; } -%fp{space}[,;]? { return ASM_T_REG_FP; } - -#{num}{space}[,;]? { yylval.u = read_number(YYText()); - return ASM_T_LIT; } -{sym} { yylval.s = std::string(YYText()); return ASM_T_SYM; } -{parenexp} { yylval.s = std::string(YYText()); return ASM_T_PEXP; } - -{space} {} -; { BEGIN INITIAL; return ASM_T_DIR_END; } -{endl} { BEGIN INITIAL; yyline++; return ASM_T_DIR_END; } - - -{sym} { yylval.s = std::string(YYText()); - return ASM_T_DIR_ARG_SYM; } -{num} { yylval.u = read_number(YYText()); - return ASM_T_DIR_ARG_NUM; } -{endl} { yyline++; BEGIN INITIAL; } - - -r { return ASM_T_DIR_ARG_R; } -w { return ASM_T_DIR_ARG_W; } -x { return ASM_T_DIR_ARG_X; } -{endl} { BEGIN INITIAL; yyline++; return ASM_T_DIR_END; } - - -{num} { yylval.u = read_number(YYText()); - return ASM_T_DIR_ARG_NUM; } -{endl} { BEGIN INITIAL; yyline++; return ASM_T_DIR_END; } - -{sym} { yylval.s = std::string(YYText()); - return ASM_T_DIR_ARG_SYM; } -\"([^\"]|\\\")*\" { BEGIN INITIAL; - yylval.s = std::string(YYText()); - yylval.s = yylval.s.substr(1, - yylval.s.length() - 2); - return ASM_T_DIR_ARG_STRING; } - -{num} { yylval.u = read_number(YYText()); - return ASM_T_DIR_ARG_NUM; } -{endl} { yyline++; BEGIN INITIAL; } - - -{endl} { yyline++; BEGIN INITIAL; } - -{space} { /*Ignore inter-token whitespace.*/ } -. { std::cout << "Unexpected character on line " << std::dec << yyline << '\n'; - exit(1); } diff --git a/src/test/2thread.s b/src/test/2thread.s deleted file mode 100644 index 234335ce..00000000 --- a/src/test/2thread.s +++ /dev/null @@ -1,36 +0,0 @@ -/* 2-SIMD-thread test program! */ - -.perm x -.entry -.global -entry: ldi %r0, #0; - - ldi %r2, #1; - ldi %r1, Array2; - clone %r2; - ldi %r1, Array1; - ldi %r5, #2; - jalis %r5, %r5, sumArr; - ldi %r7, Array1; - ld %r7, %r7, #0; - jali %r5, printdec; - ldi %r7, Array2;; - ld %r7, %r7, #0; - jali %r5, printdec - trap; - -/* Sum multiple arrays at once through the magic of SIMD! */ -sumArr: ldi %r3, #0; - ldi %r4, #8; -loop: ld %r2, %r1, #0; - add %r3, %r3, %r2; - addi %r1, %r1, __WORD; - subi %r4, %r4, #1; - rtop @p0, %r4; - @p0 ? jmpi loop; - st %r3, %r1, (-__WORD*8) - jmprt %r5; - -.perm rw -Array1: .word -1 -2 -3 -4 -5 -6 -7 -8 -Array2: .word 1 2 3 4 5 6 7 8 diff --git a/src/test/2warp_matadd.s b/src/test/2warp_matadd.s deleted file mode 100644 index f5abd25b..00000000 --- a/src/test/2warp_matadd.s +++ /dev/null @@ -1,82 +0,0 @@ -/******************************************************************************* - Harptools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly program. - -*******************************************************************************/ -/* Divergent branch: test immediate postdominator branch divergence support. */ -.def THREADS 8 - -.align 4096 -.perm x -.entry -.global -entry: ldi %r20, #1 - ldi %r21, Begin - wspawn %r20, %r21, %r20 - ldi %r20, #0 -Begin: ldi %r0, #1 - ldi %r1, THREADS -tc_loop: clone %r0 - - addi %r0, %r0, #1 - sub %r2, %r1, %r0 - rtop @p0, %r2 - @p0 ? jmpi tc_loop - - ldi %r0, #0 - jalis %r5, %r1, dthread; - - ldi %r25, #55 - ldi %r26, #1 - bar %r25, %r26 - - subi %r20, %r20, #1 - - iszero @p0, %r20 - - @p0 ? trap; - - ldi %r0, #0 - ldi %r1, (__WORD * THREADS) - shli %r1, %r1, #1 - -ploop: ld %r7, %r0, RESULT - jali %r5, printdec - - addi %r0, %r0, __WORD - sub %r7, %r1, %r0 - rtop @p0, %r7 - @p0 ? jmpi ploop - - trap; - - -dthread: shli %r15, %r20 , #6 - shli %r10, %r0 , #3 - add %r10, %r10, %r15 - ld %r11, %r10, Array1 - ld %r12, %r10, Array2 - - subi %r13, %r0, #4 - isneg @p0, %r13 - @p0 ? split - @p0 ? jmpi SUBT - add %r14, %r11, %r12 - jmpi after -SUBT: sub %r14, %r11, %r12 -after: join - - st %r14, %r10, RESULT - - jmprt %r5; - -.align 4096 -Array1: - .word 1 5 10 0 3 1 1 2 - .word 8 7 8 7 5 7 7 9 -Array2: - .word 0 2 2 0 5 0 1 1 - .word 4 2 2 0 3 2 3 2 -RESULT: .space 512 diff --git a/src/test/Makefile b/src/test/Makefile deleted file mode 100644 index fabd2fa2..00000000 --- a/src/test/Makefile +++ /dev/null @@ -1,42 +0,0 @@ -HARPLD = ../harptool -L -HARPAS = ../harptool -A -HARPEM = ../harptool -E -i -HARPDIS = ../harptool -D -4BARCH = 4b16/16/2/1 - -all: simple.bin sieve.bin 2thread.bin simple.4b.bin sieve.4b.bin 2thread.4b.bin bubble.bin bubble.4b.bin dotprod.bin dotprod.4b.bin matmul.bin matmul.4b.bin \ - matmul-mt.s lfsr.bin diverge.bin matadd.bin 2warp_matadd.bin - -run: simple.out sieve.out 2thread.out simple.4b.out sieve.4b.out 2thread.4b.out bubble.out bubble.4b.out dotprod.out dotprod.4b.out matmul.out matmul.4b.out\ - matmul-mt.out lfsr.4b.out lfsr.out diverge.out matadd.out 2warp_matadd.out - -disas: simple.d sieve.d 2thread.d simple.4b.d sieve.4b.d 2thread.4b.d bubble.d \ -bubble.4b.d dotprod.d dotprod.4b.d matmul.d matmul.4b.d matmul-mt.d lfsr.d \ -diverge.d matadd.d 2warp_matadd.d - -%.4b.out : %.4b.bin - $(HARPEM) -a $(4BARCH) -c $< > $@ - -%.out : %.bin - $(HARPEM) -c $< > $@ - -%.4b.bin : boot.4b.HOF lib.4b.HOF %.4b.HOF - $(HARPLD) --arch $(4BARCH) -o $@ $^ - -%.bin : boot.HOF lib.HOF %.HOF - $(HARPLD) -o $@ $^ - -%.4b.HOF : %.s - $(HARPAS) --arch $(4BARCH) -o $@ $< - -%.HOF : %.s - $(HARPAS) -o $@ $< - -%.4b.d : %.4b.HOF - $(HARPDIS) -o $@ --arch $(4BARCH) $< - -%.d : %.HOF - $(HARPDIS) -o $@ $< - -clean: - rm -f *.HOF *.bin *.out *.d *~ diff --git a/src/test/boot.s b/src/test/boot.s deleted file mode 100644 index cf9c2c3e..00000000 --- a/src/test/boot.s +++ /dev/null @@ -1,52 +0,0 @@ -/* Bootstrap program for HARP. */ - -.perm x -.entry - -boot: ldi %r5, kernEnt; - skep %r5; - -/* ldi %r0, #1; - ldi %r1, #033; - ldi %r2, __WORD; - muli %r2, %r2, #8; - subi %r2, %r2, #1; - shl %r0, %r0, %r2; - tlbadd %r0, %r0, %r1; */ - - ei; - - ldi %r5, entry; - jmpru %r5; - -.perm x -/* The Kernel Entry Point / Interrupt service routine. */ -kernEnt: subi %r0, %r0, #1; - rtop @p0, %r0; - @p0 ? jmpi kernEnt1; /* If it's not page not found, try again. */ - - ldi %r0, #077; /* Just map virt to phys, any address. */ - tlbadd %r1, %r1, %r0; - reti; - -kernEnt1: subi %r0, %r0, #7; /* If it's not console input, halt.*/ - rtop @p0, %r0; - @p0 ? halt; - - ldi %r8, #1; - ldi %r1, __WORD; - muli %r1, %r1, #8; - subi %r1, %r1, #1; - shl %r8, %r8, %r1; - - ld %r0, %r8, #0; - subi %r1, %r0, #0x71 - rtop @p0, %r1 - notp @p0, @p0 - @p0 ? halt; /* If it's 'q', halt. */ - st %r0, %r8, #0; - ldi %r0, #0xa; - st %r0, %r8, #0; - reti; - - diff --git a/src/test/bubble.s b/src/test/bubble.s deleted file mode 100644 index 880e1a49..00000000 --- a/src/test/bubble.s +++ /dev/null @@ -1,56 +0,0 @@ -/* Bubble Sort */ - -.def SIZE 100 - -.align 4096 -.perm x -.global - -entry: ldi %r1, Array; /* p = array; */ - ldi %r6, ArrayEnd; /* lim = array+N */ - -oloop: /* do { */ - ldi %r2, Array; /* q = array; */ - ldi %r7, #1; /* sorted = 1; */ -iloop: - sub %r3, %r2, %r6; /* while (q != lim) { */ - iszero @p0, %r3; - @p0 ? jmpi onext; - - ld %r3, %r2, #0; /* if (*q > *(q + 1)) { */ - ld %r4, %r2, __WORD; /* temp = *(q + 1); */ - sub %r5, %r4, %r3; - isneg @p0, %r5; - notp @p0, @p0; - @p0 ? jmpi inext; - st %r3, %r2, __WORD; /* *(q + 1) = *q; */ - st %r4, %r2, #0; /* *q = temp; */ - ldi %r7, #0; /* sorted = 0; */ - /* } */ -inext: addi %r2, %r2, __WORD; /* q++; */ - jmpi iloop; /* } */ -onext: addi %r1, %r1, __WORD; /* p++; */ - subi %r6, %r6, __WORD; /* lim--; */ - rtop @p0, %r7; /* } while (!sorted && p != array+N) */ - @p0 ? jmpi printresults; - subi %r3, %r1, ArrayEnd; - rtop @p0, %r3; - @p0 ? jmpi oloop; - -/* p = array; do { printdec(*p); p++; } while(p != array+N); */ -printresults: ldi %r1, Array; -printloop: ld %r7, %r1, #0; - jali %r5, printdec; - addi %r1, %r1, __WORD; - subi %r2, %r1, ArrayEnd; - rtop @p0, %r2; - @p0 ? jmpi printloop; - trap; - -.align 4096 -.perm rw -Array: - .word 3 1 4 1 5 9 2 6 5 3 5 8 9 7 9 3 2 3 8 4 6 2 6 4 3 3 8 3 2 7 9 5 0 - .word 2 8 8 4 1 9 7 1 6 9 3 9 9 3 7 5 1 0 5 8 2 0 9 7 4 9 4 4 5 9 2 3 0 - .word 7 8 1 6 4 0 6 2 8 6 2 0 8 9 9 8 6 2 8 0 3 4 8 2 5 3 4 2 1 1 7 0 6 7 -ArrayEnd: .word 0 diff --git a/src/test/diverge.s b/src/test/diverge.s deleted file mode 100644 index 197c5461..00000000 --- a/src/test/diverge.s +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************* - Harptools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly program. - -*******************************************************************************/ -/* Divergent branch: test immediate postdominator branch divergence support. */ -.def THREADS 8 - -.align 4096 -.perm x -.entry -.global -entry: - ldi %r0, #1 - ldi %r1, THREADS -sloop: clone %r0 - - addi %r0, %r0, #1 - sub %r2, %r1, %r0 - rtop @p0, %r2 - @p0 ? jmpi sloop - - ldi %r0, #0 - jalis %r5, %r1, dthread; - - ldi %r0, #0 - ldi %r1, (__WORD * THREADS) - -ploop: ld %r7, %r0, array - jali %r5, printdec - - addi %r0, %r0, __WORD - sub %r7, %r1, %r0 - rtop @p0, %r7 - @p0 ? jmpi ploop - - trap; - - -dthread: ldi %r1, #10 - ldi %r2, #0 - -loop: andi %r3, %r0, #1 - rtop @p1, %r3 - @p1 ? split - @p1 ? jmpi else - add %r2, %r2, %r0 - jmpi after -else: sub %r2, %r2, %r0 -after: join - - subi %r1, %r1, #1 - rtop @p0, %r1 - @p0 ? jmpi loop - - shli %r4, %r0, (`__WORD) - st %r2, %r4, array - - jmprt %r5; - -.align 4096 -array: .space 4096 diff --git a/src/test/dotprod.s b/src/test/dotprod.s deleted file mode 100644 index 92d1626a..00000000 --- a/src/test/dotprod.s +++ /dev/null @@ -1,45 +0,0 @@ -/******************************************************************************* - HARPtools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly program. - -*******************************************************************************/ -/* Dot product: find scalar product of two vectors */ -.def SIZE 0x1000 - -.align 4096 -.perm x -.entry -.global -entry: ldi %r0, array_a; - ldi %r1, array_b; - ldi %r2, #10; - jali %r5, dotprod - - ori %r7, %r0, #0; - jali %r5, printfloat; - - trap; - -/* Return in r0 dot product of vectors of real values pointed to by r0 and r1, - length in r2 */ -dotprod: ldi %r3, #0; -dploop: ld %r4, %r0, #0; - ld %r6, %r1, #0; - subi %r2, %r2, #1; - addi %r0, %r0, __WORD; - addi %r1, %r1, __WORD; - rtop @p0, %r2; - fmul %r4, %r4, %r6; - fadd %r3, %r3, %r4; - @p0 ? jmpi dploop; - ori %r0, %r3, #0; - jmpr %r5; - -.align 4096 -.perm rw -array_a: .word 1.0 2.0 3.0 0.5 1.0 1.5 0.33 0.67 1.0 1.33 -array_b: .word 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1f - - diff --git a/src/test/lfsr.s b/src/test/lfsr.s deleted file mode 100644 index 3a27d328..00000000 --- a/src/test/lfsr.s +++ /dev/null @@ -1,26 +0,0 @@ -.perm x -.entry -.global -entry: ldi %r0, #0x1234; - ldi %r3, #100; - -loop: ori %r7, %r0, #0; - jali %r5, printhex - jali %r5, lfsr_step - - subi %r3, %r3, #1 - rtop @p0, %r3 - @p0 ? jmpi loop - - halt - -/* %r0: value and return value - * %r5: return address - */ -lfsr_step: shri %r1, %r0, #30 - shri %r2, %r0, #2 - xor %r1, %r1, %r2 - andi %r1, %r1, #1 - shli %r0, %r0, #1 - or %r0, %r0, %r1 - jmpr %r5 diff --git a/src/test/lib.s b/src/test/lib.s deleted file mode 100644 index e897bf51..00000000 --- a/src/test/lib.s +++ /dev/null @@ -1,130 +0,0 @@ -/******************************************************************************* - HARPtools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly programs. These should work on anything from a 4x up. - -*******************************************************************************/ -/* Library: print decimals and strings! */ -.perm x - -.global -printhex: ldi %r8, (__WORD * 8); - ldi %r11, #1; - shli %r11, %r11, (__WORD*8 - 1); -printhex_l1: subi %r8, %r8, #4; - shr %r9, %r7, %r8; - andi %r9, %r9, #15; - subi %r10, %r9, #10; - isneg @p0, %r10; - notp @p1, @p0; - @p0 ? addi %r9, %r9, #0x30 - @p1 ? addi %r9, %r10, #0x61 - rtop @p0, %r8; - st %r9, %r11, #0; - @p0 ? jmpi printhex_l1; - ldi %r9, #0x0a; - st %r9, %r11, #0; - jmpr %r5; - -.global -printfloat: ori %r10, %r5, #0; - ori %r11, %r7, #0; - ftoi %r7, %r7; - jali %r5, printdecint; /* Print whole part */ - - ldi %r8, #1; - shli %r8, %r8, (__WORD*8 -1 ); - - /* Print dot */ - ldi %r7, #0x2e; - st %r7, %r8, #0; - - ldi %r7, #10; - itof %r7, %r7; - - ldi %r12, #3 - -pfloop: /* Print next decimal place */ - subi %r12, %r12, #1; - rtop @p0, %r12; - fmul %r11, %r11, %r7; - ftoi %r9, %r11; - modi %r9, %r9, #10; - addi %r9, %r9, #0x30; - st %r9, %r8, #0; - @p0 ? jmpi pfloop; - - ldi %r9, #0x0a; - st %r9, %r8, #0; - - jmpr %r10; - -printdecint: ldi %r8, #1; - shli %r8, %r8, (__WORD*8 - 1); - and %r6, %r8, %r7; - rtop @p0, %r6; - @p0 ? ldi %r6, #0x2d; - @p0 ? st %r6, %r8, #0; - @p0 ? neg %r7, %r7; - ldi %r9, #0; -printdec_l1: modi %r6, %r7, #10; - divi %r7, %r7, #10; - addi %r6, %r6, #0x30; - st %r6, %r9, digstack; - addi %r9, %r9, __WORD; - rtop @p0, %r7; - @p0 ? jmpi printdec_l1; -printdec_l2: subi %r9, %r9, __WORD; - ld %r6, %r9, digstack; - st %r6, %r8, #0; - rtop @p0, %r9; - @p0 ? jmpi printdec_l2; - - jmpr %r5 - -.global -printdec: ori %r10, %r5, #0; - jali %r5, printdecint; - ldi %r6, #0x0a; - st %r6, %r8, #0; - jmpr %r10; - -.global -puts: ldi %r8, #1; - shli %r8, %r8, (__WORD*8 - 1); - -puts_l: ld %r6, %r7, #0; - andi %r6, %r6, #0xff; - rtop @p0, %r6; - notp @p0, @p0; - @p0 ? jmpi puts_end; - st %r6, %r8, #0; - addi %r7, %r7, #1; - jmpi puts_l; -puts_end: jmpr %r5 - -.global -rand: ldi %r0, #0; - ld %r0, %r0, rseed; - mul %r0, %r0, %r0; - shri %r0, %r0, #8; - ldi %r9, #0xffff; - and %r0, %r0, %r9; - ldi %r9, #0; - st %r0, %r9, rseed; - jmpr %r5; - -.global -randf: ori %r10, %r5, #0; - jali %r5, rand; - ldi %r9, #1; - shli %r9, %r9, #16; - itof %r9, %r9; - itof %r0, %r0; - fdiv %r0, %r0, %r9; - jmpr %r10; - -.perm rw -rseed: .word 0xface -digstack: .space 10 diff --git a/src/test/matadd.s b/src/test/matadd.s deleted file mode 100644 index 3cecdcd9..00000000 --- a/src/test/matadd.s +++ /dev/null @@ -1,66 +0,0 @@ -/******************************************************************************* - Harptools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly program. - -*******************************************************************************/ -/* Divergent branch: test immediate postdominator branch divergence support. */ -.def THREADS 8 - -.align 4096 -.perm x -.entry -.global -entry: - ldi %r0, #1 - ldi %r1, THREADS -tc_loop: clone %r0 - - addi %r0, %r0, #1 - sub %r2, %r1, %r0 - rtop @p0, %r2 - @p0 ? jmpi tc_loop - - ldi %r0, #0 - jalis %r5, %r1, dthread; - - ldi %r0, #0 - ldi %r1, (__WORD * THREADS) - -ploop: ld %r7, %r0, RESULT - jali %r5, printdec - - addi %r0, %r0, __WORD - sub %r7, %r1, %r0 - rtop @p0, %r7 - @p0 ? jmpi ploop - - trap; - - -dthread: shli %r10, %r0 , #3 - ld %r11, %r10, Array1 - ld %r12, %r10, Array2 - - subi %r13, %r0, #4 - isneg @p0, %r13 - @p0 ? split - @p0 ? jmpi SUBT - add %r14, %r11, %r12 - jmpi after -SUBT: sub %r14, %r11, %r12 -after: join - - st %r14, %r10, RESULT - - jmprt %r5; - -.align 4096 -Array1: - .word 1 5 10 0 - .word 3 1 1 2 -Array2: - .word 0 2 2 0 - .word 5 0 1 1 -RESULT: .space 512 diff --git a/src/test/matmul-mt.s b/src/test/matmul-mt.s deleted file mode 100644 index 83f550ff..00000000 --- a/src/test/matmul-mt.s +++ /dev/null @@ -1,147 +0,0 @@ -/******************************************************************************* - Harptools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly program. - -*******************************************************************************/ -/* Matrix multiply: find matrix product */ -.def THREADS 4 - -.align 4096 -.perm x -.entry -.global -entry: - ldi %r0, matrix_a; - ldi %r1, #3; - jali %r5, matgen; - - ldi %r0, matrix_b; - ldi %r1, #3; - jali %r5, matgen; - - ldi %r0, matrix_a; - ldi %r1, matrix_b; - ldi %r2, matrix_r; - ldi %r3, #3; - jali %r5, matmul; - - ldi %r0, #64; - ldi %r1, matrix_r; -ploop: ld %r7, %r1, #0; - jali %r5, printfloat; - subi %r0, %r0, #1; - addi %r1, %r1, __WORD; - rtop @p0, %r0; - @p0 ? jmpi ploop; - - trap; - -/* Generate a random 2^Nx2^N matrix at %r0, with N in %r1 */ -matgen: ldi %r2, #0; - st %r5, %r2, retaddr; - ldi %r2, #1; - shl %r2, %r2, %r1; - shl %r2, %r2, %r1; - ori %r3, %r0, #0; - -mgloop: jali %r5, randf; - st %r0, %r3, #0; - addi %r3, %r3, __WORD; - subi %r2, %r2, #1; - rtop @p0, %r2; - @p0 ? jmpi mgloop; - - ldi %r2, #0; - ld %r5, %r2, retaddr; - jmpr %r5; - -/* Write the matrix product of square matrix at (%r0) and (%r1) to (%r2). The - size of these matrices is 2^Nx2^N, where N = %r3 */ - -matmul: ori %r22, %r5, #0; - ldi %r4, #1; - ldi %r10, (`__WORD); /* ` is the log base 2 operator */ - shl %r4, %r4, %r3; - add %r10, %r10, %r3; - ldi %r14, #1; - shl %r14, %r14, %r10; - shl %r17, %r14, %r3; - - divi %r24, %r4, THREADS; - divi %r17, %r17, THREADS; /* Spawn threads */ - divi %r24, %r4, THREADS; - ori %r18, %r0, #0; - ori %r19, %r2, #0; - ldi %r20, #0; -sloop: add %r0, %r0, %r17; - add %r2, %r2, %r17; - addi %r20, %r20, #1; - subi %r21, %r20, THREADS; - rtop @p0, %r21; - @p0 ? clone %r20; - @p0 ? jmpi sloop; - - ori %r0, %r18, #0; - ori %r2, %r19, #0; - - ldi %r20, THREADS; - jalis %r5, %r20, matmulthd; - - jmpr %r22; - -/* One thread of matrix multiplication. Expected register values at start: - * %r0 - matrix a pointer (plus offset) - * %r1 - matrix b pointer - * %r2 - destination matrix pointer (plus offset) - * %r24 - row count - */ -matmulthd: ldi %r9, #0; /* result row: %r9 */ -rloop: ldi %r6, #0; /* result col: %r6 */ - -cloop: shli %r16, %r6, (`__WORD); - shl %r15, %r9, %r10; - - add %r11, %r15, %r0; - add %r12, %r16, %r1; - - ldi %r8, #0 /* dot prod position: %r8 */ - ldi %r13, #0; -iloop: ld %r7, %r11, #0; - ld %r23, %r12, #0; - fmul %r7, %r7, %r23 - fadd %r13, %r13, %r7; - - addi %r8, %r8, #1; - addi %r11, %r11, __WORD; - add %r12, %r12, %r14; - sub %r7, %r8, %r4; - rtop @p0, %r7; - @p0 ? jmpi iloop; - - add %r15, %r15, %r16; - add %r15, %r15, %r2; - st %r13, %r15, #0; - - addi %r6, %r6, #1; - sub %r7, %r6, %r4; - rtop @p0, %r7; - @p0 ? jmpi cloop; - - addi %r9, %r9, #1; - sub %r7, %r9, %r24; - - rtop @p0, %r7; - @p0 ? jmpi rloop; - - jmprt %r5; - -.perm rw -.align 4096 - -matrix_a: .space 64 -matrix_b: .space 64 -matrix_r: .space 64 - -retaddr: .word 0 diff --git a/src/test/matmul.s b/src/test/matmul.s deleted file mode 100644 index d0c6a146..00000000 --- a/src/test/matmul.s +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - HARPtools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly program. - -*******************************************************************************/ -/* Matrix multiply: find matrix product */ -.def SIZE 0x1000 - -.align 4096 -.perm x -.entry -.global -entry: ldi %r0, matrix_a; - ldi %r1, matrix_b; - ldi %r2, matrix_r; - ldi %r3, #3; - jali %r5, matmul; - - ldi %r0, #64; - ldi %r1, matrix_r; -ploop: ld %r7, %r1, #0; - jali %r5, printfloat; - subi %r0, %r0, #1; - addi %r1, %r1, __WORD; - rtop @p0, %r0; - @p0 ? jmpi ploop; - - trap; - -/* Write the matrix product of square matrix at (%r0) and (%r1) to (%r2). The - size of these matrices is 2^Nx2^N, where N = %r3 */ -matmul: ldi %r4, #1; - ldi %r10, (`__WORD); /* ` is the log base 2 operator */ - shl %r4, %r4, %r3; - add %r10, %r10, %r3; - ldi %r14, #1; - shl %r14, %r14, %r10; - - ldi %r9, #0; /* result row: %r9 */ -rloop: ldi %r6, #0; /* result col: %r6 */ -cloop: shli %r16, %r6, (`__WORD); - shl %r15, %r9, %r10; - - add %r11, %r15, %r0; - add %r12, %r16, %r1; - ldi %r13, #0; - - ldi %r8, #0 /* dot prod position: %r8 */ -iloop: ld %r7, %r11, #0; - ld %r17, %r12, #0; - fmul %r7, %r7, %r17 - fadd %r13, %r13, %r7; - - addi %r8, %r8, #1; - addi %r11, %r11, __WORD; - add %r12, %r12, %r14; - sub %r7, %r8, %r4; - rtop @p0, %r7; - @p0 ? jmpi iloop; - - add %r15, %r15, %r16; - add %r15, %r15, %r2; - st %r13, %r15, #0; - - addi %r6, %r6, #1; - sub %r7, %r6, %r4; - rtop @p0, %r7; - @p0 ? jmpi cloop; - - addi %r9, %r9, #1; - sub %r7, %r9, %r14; - rtop @p0, %r7; - @p0 ? jmpi rloop; - - jmpr %r5; - -.align 4096 -.perm rw -matrix_a: .word 1f 2f 3f 4f 5f 6f 7f 8f - .word 2f 3f 4f 5f 6f 7f 8f 9f - .word 3f 4f 5f 6f 7f 8f 9f 10f - .word 4f 5f 6f 7f 8f 9f 10f 11f - .word 5f 6f 7f 8f 9f 10f 11f 12f - .word 6f 7f 8f 9f 10f 11f 12f 13f - .word 7f 8f 9f 10f 11f 12f 13f 14f - .word 8f 9f 10f 11f 12f 13f 14f 15f - -matrix_b: .word 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 - .word 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 - .word 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 - .word 3.0 3.1 3.2 3.3 3.4 3.5 3.6 3.7 - .word 4.0 4.1 4.2 4.3 4.4 4.5 4.6 4.7 - .word 5.0 5.1 5.2 5.3 5.4 5.5 5.6 5.7 - .word 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7 - .word 7.0 7.1 7.2 7.3 7.4 7.5 7.6 7.7 - -matrix_r: .space 64 - -retaddr: .word 0 diff --git a/src/test/sieve.s b/src/test/sieve.s deleted file mode 100644 index 30dcca6f..00000000 --- a/src/test/sieve.s +++ /dev/null @@ -1,74 +0,0 @@ -/******************************************************************************* - HARPtools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly program. - -*******************************************************************************/ -/* sieve of eratosthanes: Find some primes. */ -.def SIZE 0x1000 - -.align 4096 -.perm x -.entry -.global -entry: - ldi %r0, #2; -loop1: addi %r7, %r0, #0; - - muli %r1, %r0, __WORD; - st %r0, %r1, array; - addi %r0, %r0, #1; - subi %r1, %r0, SIZE; - rtop @p0, %r1; - @p0 ? jmpi loop1; - - ldi %r0, #1; -loop2: addi %r0, %r0, #1; - muli %r1, %r0, __WORD; - ld %r1, %r1, array; - rtop @p0, %r1; - notp @p0, @p0; - @p0 ? jmpi loop2; - - mul %r2, %r1, %r1; - subi %r3, %r2, SIZE; - neg %r3, %r3 - isneg @p0, %r3; - @p0 ? jmpi end; - - ldi %r3, #0; -loop3: muli %r4, %r2, __WORD; - st %r3, %r4, array; - add %r2, %r2, %r1; - ldi %r4, SIZE; - sub %r4, %r2, %r4; - isneg @p0, %r4; - notp @p0, @p0; - @p0 ? jmpi loop2; - jmpi loop3; - -end: ldi %r0, __WORD; - shli %r0, %r0, #1; - ldi %r11, #0; -loop4: ld %r1, %r0, array; - rtop @p0, %r1; - @p0 ? addi %r7, %r1, #0; - @p0 ? jali %r5, printdec; - rtop @p0, %r1; - @p0 ? addi %r11, %r11, #1; - addi %r0, %r0, __WORD; - ldi %r5, __WORD; - muli %r5, %r5, SIZE; - sub %r1, %r0, %r5; - rtop @p0, %r1; - @p0 ? jmpi loop4; - - addi %r7, %r11, #0; - jali %r5, printdec; - trap; /* All traps currently cause a halt. */ - -.perm rw - -.global -array: .space 0x1000 /* SIZE words of space. */ diff --git a/src/test/simple.s b/src/test/simple.s deleted file mode 100644 index 3732b1a2..00000000 --- a/src/test/simple.s +++ /dev/null @@ -1,32 +0,0 @@ -/******************************************************************************* - HARPtools by Chad D. Kersey, Summer 2011 -******************************************************************************** - - Sample HARP assmebly program. - -*******************************************************************************/ -/* Simple example. */ - -.align 4096 -.perm x -.entry -.global - -entry: ldi %r0, wentry - ldi %r7, hello2 - /* wspawn %r0, %r7 */ - ldi %r0, hello1 - -wentry: ori %r7, %r0, #0 - jali %r5, puts - - trap; /* All traps currently cause a halt. */ - -.perm rw - -hello1: -.byte 0x22 -.string "Harp!\" is how a harp seal says hello!\n" - -hello2: - .string "This is a string for another thread!\n" diff --git a/src/unit_test/float_test.cpp b/src/unit_test/float_test.cpp deleted file mode 100644 index f432fd7b..00000000 --- a/src/unit_test/float_test.cpp +++ /dev/null @@ -1,53 +0,0 @@ -#include "include/harpfloat.h" - -#include -#include -#include - -using namespace Harp; -using namespace std; - -static void try_val(double d, Size sz) { - Float f(d, sz); - Word w(f); - double e(Float(w, sz)); - printf("%uB: %g -> 0x%llx -> %g\n", sz, d, (unsigned long long)w, e); -} - -int main() { - /* Loop over available integer sizes. */ - unsigned randseed(time(NULL)); - for (unsigned sz = 1; sz <= 8; sz++) { - srand(randseed); - - /* First test some random ordinary numbers and their conversions. */ - for (unsigned i = 0; i < 2; i++) { - int n = rand() - RAND_MAX/2; - double d = n * 0.0000001; - - // Sometimes do negative numbers. - if (rand() & 1) d = -d; - - try_val(d, sz); - } - - /* Next, let's try +/- infinity. */ - for (unsigned i = 0; i < 2; i++) { - double d(i?HUGE_VAL:-HUGE_VAL); - try_val(d, sz); - } - - /* Last, let's try some random subnormal numbers and their conversions. */ - double mote; - if (sz < 4) mote = pow(2, int(-14 - (sz*8 - 6))); - else if (sz < 8) mote = pow(2, int(-126 - (sz*8 - 9))); - else mote = pow(2, int(-1022 - (sz*8 - 12))); - for (unsigned i = 0; i < 2; i++) { - int n = rand()%256; - double d = n * mote; - try_val(d, sz); - } - } - - return 0; -} diff --git a/src/unit_test/qsim_test.cpp b/src/unit_test/qsim_test.cpp deleted file mode 100644 index 2130ecd0..00000000 --- a/src/unit_test/qsim_test.cpp +++ /dev/null @@ -1,25 +0,0 @@ -#include -#include -#include "include/qsim-harp.h" - -class CallbackAdaptor { -public: - void inst_cb(int c, uint64_t v, uint64_t p, uint8_t l, const uint8_t *b, - enum inst_type t) - { - std::cout << "Inst @ 0x" << std::hex << v << "(0x" << p << ")\n"; - } -} cba; - -int main(int argc, char** argv) { - Harp::ArchDef arch("8w32/32/8"); - Harp::OSDomain osd(arch, std::string("../test/sieve.bin")); - - osd.set_inst_cb(&cba, &CallbackAdaptor::inst_cb); - - for (unsigned i = 0; i < 1000; ++i) { - osd.run(0, 1); - } - - return 0; -}