diff --git a/emulator/vortex_software/.DS_Store b/emulator/vortex_software/.DS_Store deleted file mode 100644 index 8f25690d..00000000 Binary files a/emulator/vortex_software/.DS_Store and /dev/null differ diff --git a/emulator/vortex_software/Makefile b/emulator/vortex_software/Makefile deleted file mode 100644 index b82f85df..00000000 --- a/emulator/vortex_software/Makefile +++ /dev/null @@ -1,21 +0,0 @@ - -COMP = /opt/riscv/bin/riscv32-unknown-elf-gcc -CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib - -DMP = /opt/riscv/bin/riscv32-unknown-elf-objdump -CPY = /opt/riscv/bin/riscv32-unknown-elf-objcopy - -VX_LIB = ./vx_os/vx_back/vx_back.s ./vx_os/vx_back/vx_back.c ./vx_os/vx_util/queue.s -VX_IO = ./vx_os/vx_io/vx_io.s ./vx_os/vx_io/vx_io.c -VX_FR = ./vx_include/vx_front.c - -all: HEX DUMP ELF - -DUMP: ELF - $(DMP) -D vortex_test.elf > vortex_test.dump - -HEX: ELF - $(CPY) -O ihex vortex_test.elf vortex_test.hex - -ELF: - $(COMP) $(CC_FLAGS) $(VX_LIB) $(VX_IO) $(VX_FR) vx_main.c -o vortex_test.elf diff --git a/emulator/vortex_software/vortex_test.dump b/emulator/vortex_software/vortex_test.dump deleted file mode 100644 index 672a1437..00000000 --- a/emulator/vortex_software/vortex_test.dump +++ /dev/null @@ -1,2067 +0,0 @@ - -vortex_test.elf: file format elf32-littleriscv - - -Disassembly of section .text: - -80000000 <_start>: -80000000: 00400513 li a0,4 -80000004: 02051073 csrw 0x20,a0 -80000008: 00800513 li a0,8 -8000000c: 02151073 csrw 0x21,a0 -80000010: f1401073 csrw mhartid,zero -80000014: 30101073 csrw misa,zero -80000018: 7ffff137 lui sp,0x7ffff -8000001c: 198000ef jal ra,800001b4 -80000020: 6dc010ef jal ra,800016fc
-80000024: 00000073 ecall - -80000028 : -80000028: 00068b93 mv s7,a3 -8000002c: 00070d13 mv s10,a4 -80000030: 00010f13 mv t5,sp -80000034: 00050393 mv t2,a0 - -80000038 : -80000038: 00100513 li a0,1 - -8000003c : -8000003c: 00755c63 bge a0,t2,80000054 - -80000040 : -80000040: 80010113 addi sp,sp,-2048 # 7fffe800 -80000044: 00050313 mv t1,a0 -80000048: 0003506b 0x3506b - -8000004c : -8000004c: 00150513 addi a0,a0,1 -80000050: fedff06f j 8000003c - -80000054 : -80000054: 000f0113 mv sp,t5 -80000058: 00000513 li a0,0 -8000005c: 00060f93 mv t6,a2 -80000060: 00038d93 mv s11,t2 -80000064: 01bfe0eb 0x1bfe0eb -80000068: 00000517 auipc a0,0x0 -8000006c: 1b050513 addi a0,a0,432 # 80000218 -80000070: 0005406b 0x5406b - -80000074 : -80000074: 00000317 auipc t1,0x0 -80000078: fb430313 addi t1,t1,-76 # 80000028 -8000007c: 0003006b 0x3006b -80000080: 00008067 ret - -80000084 : -80000084: 01000217 auipc tp,0x1000 -80000088: 26020213 addi tp,tp,608 # 810002e4 -8000008c: 00022023 sw zero,0(tp) # 0 -80000090: 00122223 sw ra,4(tp) # 4 -80000094: 00222423 sw sp,8(tp) # 8 -80000098: 00322623 sw gp,12(tp) # c -8000009c: 00422823 sw tp,16(tp) # 10 -800000a0: 00522a23 sw t0,20(tp) # 14 -800000a4: 00622c23 sw t1,24(tp) # 18 -800000a8: 00722e23 sw t2,28(tp) # 1c -800000ac: 02822023 sw s0,32(tp) # 20 -800000b0: 02922223 sw s1,36(tp) # 24 -800000b4: 02a22423 sw a0,40(tp) # 28 -800000b8: 02b22623 sw a1,44(tp) # 2c -800000bc: 02c22823 sw a2,48(tp) # 30 -800000c0: 02d22a23 sw a3,52(tp) # 34 -800000c4: 02e22c23 sw a4,56(tp) # 38 -800000c8: 02f22e23 sw a5,60(tp) # 3c -800000cc: 05022023 sw a6,64(tp) # 40 -800000d0: 05122223 sw a7,68(tp) # 44 -800000d4: 05222423 sw s2,72(tp) # 48 -800000d8: 05322623 sw s3,76(tp) # 4c -800000dc: 05422823 sw s4,80(tp) # 50 -800000e0: 05522a23 sw s5,84(tp) # 54 -800000e4: 05622c23 sw s6,88(tp) # 58 -800000e8: 05722e23 sw s7,92(tp) # 5c -800000ec: 07822023 sw s8,96(tp) # 60 -800000f0: 07922223 sw s9,100(tp) # 64 -800000f4: 07a22423 sw s10,104(tp) # 68 -800000f8: 07b22623 sw s11,108(tp) # 6c -800000fc: 07c22823 sw t3,112(tp) # 70 -80000100: 07d22a23 sw t4,116(tp) # 74 -80000104: 07e22c23 sw t5,120(tp) # 78 -80000108: 07f22e23 sw t6,124(tp) # 7c -8000010c: 00100213 li tp,1 -80000110: 00008067 ret - -80000114 : -80000114: 01000217 auipc tp,0x1000 -80000118: 1d020213 addi tp,tp,464 # 810002e4 -8000011c: 00022003 lw zero,0(tp) # 0 -80000120: 00422083 lw ra,4(tp) # 4 -80000124: 00822103 lw sp,8(tp) # 8 -80000128: 00c22183 lw gp,12(tp) # c -8000012c: 01022203 lw tp,16(tp) # 10 -80000130: 01422283 lw t0,20(tp) # 14 -80000134: 01822303 lw t1,24(tp) # 18 -80000138: 01c22383 lw t2,28(tp) # 1c -8000013c: 02022403 lw s0,32(tp) # 20 -80000140: 02422483 lw s1,36(tp) # 24 -80000144: 02822503 lw a0,40(tp) # 28 -80000148: 02c22583 lw a1,44(tp) # 2c -8000014c: 03022603 lw a2,48(tp) # 30 -80000150: 03422683 lw a3,52(tp) # 34 -80000154: 03822703 lw a4,56(tp) # 38 -80000158: 03c22783 lw a5,60(tp) # 3c -8000015c: 04022803 lw a6,64(tp) # 40 -80000160: 04422883 lw a7,68(tp) # 44 -80000164: 04822903 lw s2,72(tp) # 48 -80000168: 04c22983 lw s3,76(tp) # 4c -8000016c: 05022a03 lw s4,80(tp) # 50 -80000170: 05422a83 lw s5,84(tp) # 54 -80000174: 05822b03 lw s6,88(tp) # 58 -80000178: 05c22b83 lw s7,92(tp) # 5c -8000017c: 06022c03 lw s8,96(tp) # 60 -80000180: 06422c83 lw s9,100(tp) # 64 -80000184: 06822d03 lw s10,104(tp) # 68 -80000188: 06c22d83 lw s11,108(tp) # 6c -8000018c: 07022e03 lw t3,112(tp) # 70 -80000190: 07422e83 lw t4,116(tp) # 74 -80000194: 07822f03 lw t5,120(tp) # 78 -80000198: 07c22f83 lw t6,124(tp) # 7c -8000019c: 00000213 li tp,0 -800001a0: 00008067 ret - -800001a4 : -800001a4: 02002573 csrr a0,0x20 -800001a8: 00008067 ret - -800001ac : -800001ac: 02102573 csrr a0,0x21 -800001b0: 00008067 ret - -800001b4 : -800001b4: fe010113 addi sp,sp,-32 -800001b8: 00112e23 sw ra,28(sp) -800001bc: 00812c23 sw s0,24(sp) -800001c0: 02010413 addi s0,sp,32 -800001c4: fe042623 sw zero,-20(s0) -800001c8: 0300006f j 800001f8 -800001cc: fec42703 lw a4,-20(s0) -800001d0: 4c400793 li a5,1220 -800001d4: 02f70733 mul a4,a4,a5 -800001d8: 810007b7 lui a5,0x81000 -800001dc: 36478793 addi a5,a5,868 # 81000364 -800001e0: 00f707b3 add a5,a4,a5 -800001e4: 00078513 mv a0,a5 -800001e8: 404000ef jal ra,800005ec -800001ec: fec42783 lw a5,-20(s0) -800001f0: 00178793 addi a5,a5,1 -800001f4: fef42623 sw a5,-20(s0) -800001f8: fec42703 lw a4,-20(s0) -800001fc: 00700793 li a5,7 -80000200: fce7d6e3 bge a5,a4,800001cc -80000204: 00000013 nop -80000208: 01c12083 lw ra,28(sp) -8000020c: 01812403 lw s0,24(sp) -80000210: 02010113 addi sp,sp,32 -80000214: 00008067 ret - -80000218 : -80000218: fd010113 addi sp,sp,-48 -8000021c: 02112623 sw ra,44(sp) -80000220: 02812423 sw s0,40(sp) -80000224: 03a12223 sw s10,36(sp) -80000228: 03010413 addi s0,sp,48 -8000022c: 000d0713 mv a4,s10 -80000230: 4c400793 li a5,1220 -80000234: 02f70733 mul a4,a4,a5 -80000238: 810007b7 lui a5,0x81000 -8000023c: 36478793 addi a5,a5,868 # 81000364 -80000240: 00f707b3 add a5,a4,a5 -80000244: 00078513 mv a0,a5 -80000248: 4b8000ef jal ra,80000700 -8000024c: 00050793 mv a5,a0 -80000250: 02078a63 beqz a5,80000284 -80000254: 000d0713 mv a4,s10 -80000258: 810007b7 lui a5,0x81000 -8000025c: 00271713 slli a4,a4,0x2 -80000260: 2c478793 addi a5,a5,708 # 810002c4 -80000264: 00f707b3 add a5,a4,a5 -80000268: 00100713 li a4,1 -8000026c: 00e7a023 sw a4,0(a5) -80000270: 000d0793 mv a5,s10 -80000274: 00079663 bnez a5,80000280 -80000278: e9dff0ef jal ra,80000114 -8000027c: 0580006f j 800002d4 -80000280: 00000073 ecall -80000284: 000d0713 mv a4,s10 -80000288: 4c400793 li a5,1220 -8000028c: 02f70733 mul a4,a4,a5 -80000290: 810007b7 lui a5,0x81000 -80000294: 36478793 addi a5,a5,868 # 81000364 -80000298: 00f707b3 add a5,a4,a5 -8000029c: fd840713 addi a4,s0,-40 -800002a0: 00070593 mv a1,a4 -800002a4: 00078513 mv a0,a5 -800002a8: 3d0000ef jal ra,80000678 -800002ac: fe042783 lw a5,-32(s0) -800002b0: 00078113 mv sp,a5 -800002b4: fdc42783 lw a5,-36(s0) -800002b8: fd842583 lw a1,-40(s0) -800002bc: fe442603 lw a2,-28(s0) -800002c0: fe842683 lw a3,-24(s0) -800002c4: fec42703 lw a4,-20(s0) -800002c8: 00078513 mv a0,a5 -800002cc: d5dff0ef jal ra,80000028 -800002d0: 00000073 ecall -800002d4: 02c12083 lw ra,44(sp) -800002d8: 02812403 lw s0,40(sp) -800002dc: 02412d03 lw s10,36(sp) -800002e0: 03010113 addi sp,sp,48 -800002e4: 00008067 ret - -800002e8 : -800002e8: fb010113 addi sp,sp,-80 -800002ec: 04112623 sw ra,76(sp) -800002f0: 04812423 sw s0,72(sp) -800002f4: 05010413 addi s0,sp,80 -800002f8: eadff0ef jal ra,800001a4 -800002fc: fea42423 sw a0,-24(s0) -80000300: 00010993 mv s3,sp -80000304: 00100793 li a5,1 -80000308: fef42623 sw a5,-20(s0) -8000030c: 0840006f j 80000390 -80000310: fec42703 lw a4,-20(s0) -80000314: 4c400793 li a5,1220 -80000318: 02f70733 mul a4,a4,a5 -8000031c: 810007b7 lui a5,0x81000 -80000320: 36478793 addi a5,a5,868 # 81000364 -80000324: 00f707b3 add a5,a4,a5 -80000328: 00078513 mv a0,a5 -8000032c: 3d4000ef jal ra,80000700 -80000330: 00050793 mv a5,a0 -80000334: 04079863 bnez a5,80000384 -80000338: fec42703 lw a4,-20(s0) -8000033c: 4c400793 li a5,1220 -80000340: 02f70733 mul a4,a4,a5 -80000344: 810007b7 lui a5,0x81000 -80000348: 36478793 addi a5,a5,868 # 81000364 -8000034c: 00f707b3 add a5,a4,a5 -80000350: fd040713 addi a4,s0,-48 -80000354: 00070593 mv a1,a4 -80000358: 00078513 mv a0,a5 -8000035c: 31c000ef jal ra,80000678 -80000360: fd842783 lw a5,-40(s0) -80000364: 00078113 mv sp,a5 -80000368: fd442783 lw a5,-44(s0) -8000036c: fd042583 lw a1,-48(s0) -80000370: fdc42603 lw a2,-36(s0) -80000374: fe042683 lw a3,-32(s0) -80000378: fe442703 lw a4,-28(s0) -8000037c: 00078513 mv a0,a5 -80000380: cf5ff0ef jal ra,80000074 -80000384: fec42783 lw a5,-20(s0) -80000388: 00178793 addi a5,a5,1 -8000038c: fef42623 sw a5,-20(s0) -80000390: fec42783 lw a5,-20(s0) -80000394: fe842703 lw a4,-24(s0) -80000398: f6e7ece3 bltu a5,a4,80000310 -8000039c: 00098113 mv sp,s3 -800003a0: ce5ff0ef jal ra,80000084 -800003a4: 00020793 mv a5,tp -800003a8: 04078863 beqz a5,800003f8 -800003ac: 810007b7 lui a5,0x81000 -800003b0: 36478513 addi a0,a5,868 # 81000364 -800003b4: 34c000ef jal ra,80000700 -800003b8: 00050793 mv a5,a0 -800003bc: 02079e63 bnez a5,800003f8 -800003c0: fb840793 addi a5,s0,-72 -800003c4: 00078593 mv a1,a5 -800003c8: 810007b7 lui a5,0x81000 -800003cc: 36478513 addi a0,a5,868 # 81000364 -800003d0: 2a8000ef jal ra,80000678 -800003d4: fc042783 lw a5,-64(s0) -800003d8: 00078113 mv sp,a5 -800003dc: fbc42783 lw a5,-68(s0) -800003e0: fb842583 lw a1,-72(s0) -800003e4: fc442603 lw a2,-60(s0) -800003e8: fc842683 lw a3,-56(s0) -800003ec: fcc42703 lw a4,-52(s0) -800003f0: 00078513 mv a0,a5 -800003f4: c35ff0ef jal ra,80000028 -800003f8: 00000013 nop -800003fc: 04c12083 lw ra,76(sp) -80000400: 04812403 lw s0,72(sp) -80000404: 05010113 addi sp,sp,80 -80000408: 00008067 ret - -8000040c : -8000040c: fb010113 addi sp,sp,-80 -80000410: 04112623 sw ra,76(sp) -80000414: 04812423 sw s0,72(sp) -80000418: 05010413 addi s0,sp,80 -8000041c: faa42e23 sw a0,-68(s0) -80000420: fab42c23 sw a1,-72(s0) -80000424: fac42a23 sw a2,-76(s0) -80000428: fad42823 sw a3,-80(s0) -8000042c: d89ff0ef jal ra,800001b4 -80000430: d75ff0ef jal ra,800001a4 -80000434: fea42223 sw a0,-28(s0) -80000438: 00010913 mv s2,sp -8000043c: fe042623 sw zero,-20(s0) -80000440: fe042423 sw zero,-24(s0) -80000444: 08c0006f j 800004d0 -80000448: ffff09b7 lui s3,0xffff0 -8000044c: 01310133 add sp,sp,s3 -80000450: fe842783 lw a5,-24(s0) -80000454: fcf42623 sw a5,-52(s0) -80000458: fb842783 lw a5,-72(s0) -8000045c: fcf42823 sw a5,-48(s0) -80000460: 00010793 mv a5,sp -80000464: fcf42a23 sw a5,-44(s0) -80000468: fb442783 lw a5,-76(s0) -8000046c: fcf42c23 sw a5,-40(s0) -80000470: fb042783 lw a5,-80(s0) -80000474: fcf42e23 sw a5,-36(s0) -80000478: fec42783 lw a5,-20(s0) -8000047c: fef42023 sw a5,-32(s0) -80000480: fec42703 lw a4,-20(s0) -80000484: 4c400793 li a5,1220 -80000488: 02f70733 mul a4,a4,a5 -8000048c: 810007b7 lui a5,0x81000 -80000490: 36478793 addi a5,a5,868 # 81000364 -80000494: 00f707b3 add a5,a4,a5 -80000498: fcc40713 addi a4,s0,-52 -8000049c: 00070593 mv a1,a4 -800004a0: 00078513 mv a0,a5 -800004a4: 16c000ef jal ra,80000610 -800004a8: fec42783 lw a5,-20(s0) -800004ac: 00178793 addi a5,a5,1 -800004b0: fef42623 sw a5,-20(s0) -800004b4: fec42783 lw a5,-20(s0) -800004b8: fe442703 lw a4,-28(s0) -800004bc: 00e7e463 bltu a5,a4,800004c4 -800004c0: fe042623 sw zero,-20(s0) -800004c4: fe842783 lw a5,-24(s0) -800004c8: 00178793 addi a5,a5,1 -800004cc: fef42423 sw a5,-24(s0) -800004d0: fe842703 lw a4,-24(s0) -800004d4: fbc42783 lw a5,-68(s0) -800004d8: f6f768e3 bltu a4,a5,80000448 -800004dc: 00090113 mv sp,s2 -800004e0: e09ff0ef jal ra,800002e8 -800004e4: 00000013 nop -800004e8: 04c12083 lw ra,76(sp) -800004ec: 04812403 lw s0,72(sp) -800004f0: 05010113 addi sp,sp,80 -800004f4: 00008067 ret - -800004f8 : -800004f8: fd010113 addi sp,sp,-48 -800004fc: 02112623 sw ra,44(sp) -80000500: 02812423 sw s0,40(sp) -80000504: 03010413 addi s0,sp,48 -80000508: fca42e23 sw a0,-36(s0) -8000050c: c99ff0ef jal ra,800001a4 -80000510: fea42023 sw a0,-32(s0) -80000514: fe042623 sw zero,-20(s0) -80000518: 0540006f j 8000056c -8000051c: fe042623 sw zero,-20(s0) -80000520: fe042423 sw zero,-24(s0) -80000524: 03c0006f j 80000560 -80000528: 810007b7 lui a5,0x81000 -8000052c: fe842703 lw a4,-24(s0) -80000530: 00271713 slli a4,a4,0x2 -80000534: 2c478793 addi a5,a5,708 # 810002c4 -80000538: 00f707b3 add a5,a4,a5 -8000053c: 0007a703 lw a4,0(a5) -80000540: 00100793 li a5,1 -80000544: 00f71863 bne a4,a5,80000554 -80000548: fec42783 lw a5,-20(s0) -8000054c: 00178793 addi a5,a5,1 -80000550: fef42623 sw a5,-20(s0) -80000554: fe842783 lw a5,-24(s0) -80000558: 00178793 addi a5,a5,1 -8000055c: fef42423 sw a5,-24(s0) -80000560: fe842783 lw a5,-24(s0) -80000564: fe042703 lw a4,-32(s0) -80000568: fce7e0e3 bltu a5,a4,80000528 -8000056c: fec42703 lw a4,-20(s0) -80000570: fdc42783 lw a5,-36(s0) -80000574: faf714e3 bne a4,a5,8000051c -80000578: fe042223 sw zero,-28(s0) -8000057c: 0280006f j 800005a4 -80000580: 810007b7 lui a5,0x81000 -80000584: fe442703 lw a4,-28(s0) -80000588: 00271713 slli a4,a4,0x2 -8000058c: 2c478793 addi a5,a5,708 # 810002c4 -80000590: 00f707b3 add a5,a4,a5 -80000594: 0007a023 sw zero,0(a5) -80000598: fe442783 lw a5,-28(s0) -8000059c: 00178793 addi a5,a5,1 -800005a0: fef42223 sw a5,-28(s0) -800005a4: fe442783 lw a5,-28(s0) -800005a8: fe042703 lw a4,-32(s0) -800005ac: fce7eae3 bltu a5,a4,80000580 -800005b0: 00000013 nop -800005b4: 02c12083 lw ra,44(sp) -800005b8: 02812403 lw s0,40(sp) -800005bc: 03010113 addi sp,sp,48 -800005c0: 00008067 ret - -800005c4 : -800005c4: ff010113 addi sp,sp,-16 -800005c8: 00812623 sw s0,12(sp) -800005cc: 01712423 sw s7,8(sp) -800005d0: 01010413 addi s0,sp,16 -800005d4: 000b8793 mv a5,s7 -800005d8: 00078513 mv a0,a5 -800005dc: 00c12403 lw s0,12(sp) -800005e0: 00812b83 lw s7,8(sp) -800005e4: 01010113 addi sp,sp,16 -800005e8: 00008067 ret - -800005ec : -800005ec: 00050293 mv t0,a0 -800005f0: 00000313 li t1,0 -800005f4: 00700393 li t2,7 -800005f8: 0062a023 sw t1,0(t0) -800005fc: 0062a223 sw t1,4(t0) -80000600: 0062a423 sw t1,8(t0) -80000604: 0072a623 sw t2,12(t0) -80000608: 0062a823 sw t1,16(t0) -8000060c: 00008067 ret - -80000610 : -80000610: 00050293 mv t0,a0 -80000614: 0082a303 lw t1,8(t0) -80000618: 00130313 addi t1,t1,1 -8000061c: 0062a423 sw t1,8(t0) -80000620: 01428313 addi t1,t0,20 -80000624: 0042ae83 lw t4,4(t0) -80000628: 005e9393 slli t2,t4,0x5 -8000062c: 00730333 add t1,t1,t2 -80000630: 0005ae03 lw t3,0(a1) -80000634: 01c32023 sw t3,0(t1) -80000638: 0045ae03 lw t3,4(a1) -8000063c: 01c32223 sw t3,4(t1) -80000640: 0085ae03 lw t3,8(a1) -80000644: 01c32423 sw t3,8(t1) -80000648: 00c5ae03 lw t3,12(a1) -8000064c: 01c32623 sw t3,12(t1) -80000650: 0105ae03 lw t3,16(a1) -80000654: 01c32823 sw t3,16(t1) -80000658: 0145ae03 lw t3,20(a1) -8000065c: 01c32a23 sw t3,20(t1) -80000660: 001e8e93 addi t4,t4,1 -80000664: 03200f13 li t5,50 -80000668: 01ee9463 bne t4,t5,80000670 -8000066c: 00000e93 li t4,0 - -80000670 : -80000670: 01d2a223 sw t4,4(t0) -80000674: 00008067 ret - -80000678 : -80000678: 00050293 mv t0,a0 -8000067c: 0082a303 lw t1,8(t0) -80000680: fff30313 addi t1,t1,-1 -80000684: 0062a423 sw t1,8(t0) -80000688: 01428313 addi t1,t0,20 -8000068c: 0002ae83 lw t4,0(t0) -80000690: 03200f93 li t6,50 -80000694: 000e8f13 mv t5,t4 -80000698: 001f0f13 addi t5,t5,1 -8000069c: 01ff1463 bne t5,t6,800006a4 -800006a0: 00000f13 li t5,0 - -800006a4 : -800006a4: 01e2a023 sw t5,0(t0) -800006a8: 005e9393 slli t2,t4,0x5 -800006ac: 00730333 add t1,t1,t2 -800006b0: 00032e03 lw t3,0(t1) -800006b4: 01c5a023 sw t3,0(a1) -800006b8: 00432e03 lw t3,4(t1) -800006bc: 01c5a223 sw t3,4(a1) -800006c0: 00832e03 lw t3,8(t1) -800006c4: 01c5a423 sw t3,8(a1) -800006c8: 00c32e03 lw t3,12(t1) -800006cc: 01c5a623 sw t3,12(a1) -800006d0: 01032e03 lw t3,16(t1) -800006d4: 01c5a823 sw t3,16(a1) -800006d8: 01432e03 lw t3,20(t1) -800006dc: 01c5aa23 sw t3,20(a1) -800006e0: 00008067 ret - -800006e4 : -800006e4: 00050293 mv t0,a0 -800006e8: 0082a303 lw t1,8(t0) -800006ec: 00000513 li a0,0 -800006f0: 03200e13 li t3,50 -800006f4: 006e1463 bne t3,t1,800006fc -800006f8: 00150513 addi a0,a0,1 - -800006fc : -800006fc: 00008067 ret - -80000700 : -80000700: 00050293 mv t0,a0 -80000704: 0082a303 lw t1,8(t0) -80000708: 00000513 li a0,0 -8000070c: 00000e13 li t3,0 -80000710: 006e1463 bne t3,t1,80000718 -80000714: 00150513 addi a0,a0,1 - -80000718 : -80000718: 00008067 ret - -8000071c : -8000071c: 00050293 mv t0,a0 -80000720: 00c2a303 lw t1,12(t0) -80000724: 0102a383 lw t2,16(t0) -80000728: 0063b533 sltu a0,t2,t1 -8000072c: 00008067 ret - -80000730 : -80000730: ff410113 addi sp,sp,-12 -80000734: 00112023 sw ra,0(sp) -80000738: 00b12223 sw a1,4(sp) - -8000073c : -8000073c: 00054583 lbu a1,0(a0) -80000740: 00058863 beqz a1,80000750 -80000744: 01c000ef jal ra,80000760 -80000748: 00150513 addi a0,a0,1 -8000074c: ff1ff06f j 8000073c - -80000750 : -80000750: 00012083 lw ra,0(sp) -80000754: 00412583 lw a1,4(sp) -80000758: 00c10113 addi sp,sp,12 -8000075c: 00008067 ret - -80000760 : -80000760: 000108b7 lui a7,0x10 -80000764: 00b8a023 sw a1,0(a7) # 10000 -80000768: 00008067 ret - -8000076c : -8000076c: fd010113 addi sp,sp,-48 -80000770: 02112623 sw ra,44(sp) -80000774: 02812423 sw s0,40(sp) -80000778: 03010413 addi s0,sp,48 -8000077c: fca42e23 sw a0,-36(s0) -80000780: fdc42703 lw a4,-36(s0) -80000784: 00f00793 li a5,15 -80000788: 02e7e463 bltu a5,a4,800007b0 -8000078c: 810007b7 lui a5,0x81000 -80000790: fdc42703 lw a4,-36(s0) -80000794: 00271713 slli a4,a4,0x2 -80000798: 20478793 addi a5,a5,516 # 81000204 -8000079c: 00f707b3 add a5,a4,a5 -800007a0: 0007a783 lw a5,0(a5) -800007a4: 00078513 mv a0,a5 -800007a8: f89ff0ef jal ra,80000730 -800007ac: 0740006f j 80000820 -800007b0: 02000793 li a5,32 -800007b4: fef42623 sw a5,-20(s0) -800007b8: fe0405a3 sb zero,-21(s0) -800007bc: fec42783 lw a5,-20(s0) -800007c0: ffc78793 addi a5,a5,-4 -800007c4: fdc42703 lw a4,-36(s0) -800007c8: 00f757b3 srl a5,a4,a5 -800007cc: 00f7f793 andi a5,a5,15 -800007d0: fef42223 sw a5,-28(s0) -800007d4: fe442783 lw a5,-28(s0) -800007d8: 00078663 beqz a5,800007e4 -800007dc: 00100793 li a5,1 -800007e0: fef405a3 sb a5,-21(s0) -800007e4: feb44783 lbu a5,-21(s0) -800007e8: 02078263 beqz a5,8000080c -800007ec: 810007b7 lui a5,0x81000 -800007f0: fe442703 lw a4,-28(s0) -800007f4: 00271713 slli a4,a4,0x2 -800007f8: 20478793 addi a5,a5,516 # 81000204 -800007fc: 00f707b3 add a5,a4,a5 -80000800: 0007a783 lw a5,0(a5) -80000804: 00078513 mv a0,a5 -80000808: f29ff0ef jal ra,80000730 -8000080c: fec42783 lw a5,-20(s0) -80000810: ffc78793 addi a5,a5,-4 -80000814: fef42623 sw a5,-20(s0) -80000818: fec42783 lw a5,-20(s0) -8000081c: faf040e3 bgtz a5,800007bc -80000820: 02c12083 lw ra,44(sp) -80000824: 02812403 lw s0,40(sp) -80000828: 03010113 addi sp,sp,48 -8000082c: 00008067 ret - -80000830 : -80000830: fe010113 addi sp,sp,-32 -80000834: 00112e23 sw ra,28(sp) -80000838: 00812c23 sw s0,24(sp) -8000083c: 02010413 addi s0,sp,32 -80000840: fea42623 sw a0,-20(s0) -80000844: feb42423 sw a1,-24(s0) -80000848: fec42503 lw a0,-20(s0) -8000084c: ee5ff0ef jal ra,80000730 -80000850: fe842503 lw a0,-24(s0) -80000854: f19ff0ef jal ra,8000076c -80000858: 810007b7 lui a5,0x81000 -8000085c: 08078513 addi a0,a5,128 # 81000080 -80000860: ed1ff0ef jal ra,80000730 -80000864: 00000013 nop -80000868: 01c12083 lw ra,28(sp) -8000086c: 01812403 lw s0,24(sp) -80000870: 02010113 addi sp,sp,32 -80000874: 00008067 ret - -80000878 : -80000878: fd010113 addi sp,sp,-48 -8000087c: 02112623 sw ra,44(sp) -80000880: 02812423 sw s0,40(sp) -80000884: 03010413 addi s0,sp,48 -80000888: fca42e23 sw a0,-36(s0) -8000088c: fcb42c23 sw a1,-40(s0) -80000890: fcc42a23 sw a2,-44(s0) -80000894: fcd42823 sw a3,-48(s0) -80000898: 810037b7 lui a5,0x81003 -8000089c: fdc42703 lw a4,-36(s0) -800008a0: 9ae7a223 sw a4,-1628(a5) # 810029a4 -800008a4: 810037b7 lui a5,0x81003 -800008a8: 9a478793 addi a5,a5,-1628 # 810029a4 -800008ac: fd842703 lw a4,-40(s0) -800008b0: 00e7a223 sw a4,4(a5) -800008b4: 810037b7 lui a5,0x81003 -800008b8: 9a478793 addi a5,a5,-1628 # 810029a4 -800008bc: fd442703 lw a4,-44(s0) -800008c0: 00e7a423 sw a4,8(a5) -800008c4: 810037b7 lui a5,0x81003 -800008c8: 9a478793 addi a5,a5,-1628 # 810029a4 -800008cc: fd042703 lw a4,-48(s0) -800008d0: 00e7a623 sw a4,12(a5) -800008d4: 8d9ff0ef jal ra,800001ac -800008d8: fea42423 sw a0,-24(s0) -800008dc: fd042703 lw a4,-48(s0) -800008e0: fe842783 lw a5,-24(s0) -800008e4: 02f757b3 divu a5,a4,a5 -800008e8: fef42623 sw a5,-20(s0) -800008ec: fd042703 lw a4,-48(s0) -800008f0: fe842783 lw a5,-24(s0) -800008f4: 02f777b3 remu a5,a4,a5 -800008f8: 00078863 beqz a5,80000908 -800008fc: fec42783 lw a5,-20(s0) -80000900: 00178793 addi a5,a5,1 -80000904: fef42623 sw a5,-20(s0) -80000908: fec42583 lw a1,-20(s0) -8000090c: 810007b7 lui a5,0x81000 -80000910: 0c478513 addi a0,a5,196 # 810000c4 -80000914: f1dff0ef jal ra,80000830 -80000918: 810037b7 lui a5,0x81003 -8000091c: 9a478793 addi a5,a5,-1628 # 810029a4 -80000920: fec42703 lw a4,-20(s0) -80000924: 00e7a823 sw a4,16(a5) -80000928: fd042703 lw a4,-48(s0) -8000092c: fe842783 lw a5,-24(s0) -80000930: 02f76263 bltu a4,a5,80000954 -80000934: 810037b7 lui a5,0x81003 -80000938: 9a478693 addi a3,a5,-1628 # 810029a4 -8000093c: 800017b7 lui a5,0x80001 -80000940: 9ac78613 addi a2,a5,-1620 # 800009ac -80000944: fe842583 lw a1,-24(s0) -80000948: fd042503 lw a0,-48(s0) -8000094c: ac1ff0ef jal ra,8000040c -80000950: 0200006f j 80000970 -80000954: 810037b7 lui a5,0x81003 -80000958: 9a478693 addi a3,a5,-1628 # 810029a4 -8000095c: 800017b7 lui a5,0x80001 -80000960: 9ac78613 addi a2,a5,-1620 # 800009ac -80000964: fd042583 lw a1,-48(s0) -80000968: fd042503 lw a0,-48(s0) -8000096c: aa1ff0ef jal ra,8000040c -80000970: 835ff0ef jal ra,800001a4 -80000974: fea42223 sw a0,-28(s0) -80000978: fd042703 lw a4,-48(s0) -8000097c: fe442783 lw a5,-28(s0) -80000980: 00e7f863 bgeu a5,a4,80000990 -80000984: fe442503 lw a0,-28(s0) -80000988: b71ff0ef jal ra,800004f8 -8000098c: 00c0006f j 80000998 -80000990: fd042503 lw a0,-48(s0) -80000994: b65ff0ef jal ra,800004f8 -80000998: 00000013 nop -8000099c: 02c12083 lw ra,44(sp) -800009a0: 02812403 lw s0,40(sp) -800009a4: 03010113 addi sp,sp,48 -800009a8: 00008067 ret - -800009ac <_vx_mat_mult>: -800009ac: fa010113 addi sp,sp,-96 -800009b0: 04112e23 sw ra,92(sp) -800009b4: 04812c23 sw s0,88(sp) -800009b8: 06010413 addi s0,sp,96 -800009bc: faa42623 sw a0,-84(s0) -800009c0: fab42423 sw a1,-88(s0) -800009c4: c01ff0ef jal ra,800005c4 -800009c8: fca42c23 sw a0,-40(s0) -800009cc: fd842783 lw a5,-40(s0) -800009d0: 0007a783 lw a5,0(a5) -800009d4: fcf42a23 sw a5,-44(s0) -800009d8: fd842783 lw a5,-40(s0) -800009dc: 0047a783 lw a5,4(a5) -800009e0: fcf42823 sw a5,-48(s0) -800009e4: fd842783 lw a5,-40(s0) -800009e8: 0087a783 lw a5,8(a5) -800009ec: fcf42623 sw a5,-52(s0) -800009f0: fd842783 lw a5,-40(s0) -800009f4: 0107a783 lw a5,16(a5) -800009f8: fef42623 sw a5,-20(s0) -800009fc: fec42703 lw a4,-20(s0) -80000a00: fac42783 lw a5,-84(s0) -80000a04: 02f707b3 mul a5,a4,a5 -80000a08: fef42423 sw a5,-24(s0) -80000a0c: fec42783 lw a5,-20(s0) -80000a10: 00079a63 bnez a5,80000a24 <_vx_mat_mult+0x78> -80000a14: 00100793 li a5,1 -80000a18: fef42623 sw a5,-20(s0) -80000a1c: fac42783 lw a5,-84(s0) -80000a20: fef42423 sw a5,-24(s0) -80000a24: fd842783 lw a5,-40(s0) -80000a28: 00c7a783 lw a5,12(a5) -80000a2c: fcf42423 sw a5,-56(s0) -80000a30: fe042223 sw zero,-28(s0) -80000a34: 1240006f j 80000b58 <_vx_mat_mult+0x1ac> -80000a38: fe042023 sw zero,-32(s0) -80000a3c: fc042e23 sw zero,-36(s0) -80000a40: 0780006f j 80000ab8 <_vx_mat_mult+0x10c> -80000a44: fa842703 lw a4,-88(s0) -80000a48: fc842783 lw a5,-56(s0) -80000a4c: 02f707b3 mul a5,a4,a5 -80000a50: fdc42703 lw a4,-36(s0) -80000a54: 00f707b3 add a5,a4,a5 -80000a58: fcf42223 sw a5,-60(s0) -80000a5c: fc842703 lw a4,-56(s0) -80000a60: fdc42783 lw a5,-36(s0) -80000a64: 02f707b3 mul a5,a4,a5 -80000a68: fe842703 lw a4,-24(s0) -80000a6c: 00f707b3 add a5,a4,a5 -80000a70: fcf42023 sw a5,-64(s0) -80000a74: fc442783 lw a5,-60(s0) -80000a78: 00279793 slli a5,a5,0x2 -80000a7c: fd442703 lw a4,-44(s0) -80000a80: 00f707b3 add a5,a4,a5 -80000a84: 0007a703 lw a4,0(a5) -80000a88: fc042783 lw a5,-64(s0) -80000a8c: 00279793 slli a5,a5,0x2 -80000a90: fd042683 lw a3,-48(s0) -80000a94: 00f687b3 add a5,a3,a5 -80000a98: 0007a783 lw a5,0(a5) -80000a9c: 02f707b3 mul a5,a4,a5 -80000aa0: fe042703 lw a4,-32(s0) -80000aa4: 00f707b3 add a5,a4,a5 -80000aa8: fef42023 sw a5,-32(s0) -80000aac: fdc42783 lw a5,-36(s0) -80000ab0: 00178793 addi a5,a5,1 -80000ab4: fcf42e23 sw a5,-36(s0) -80000ab8: fdc42703 lw a4,-36(s0) -80000abc: fc842783 lw a5,-56(s0) -80000ac0: f8f762e3 bltu a4,a5,80000a44 <_vx_mat_mult+0x98> -80000ac4: fa842703 lw a4,-88(s0) -80000ac8: fc842783 lw a5,-56(s0) -80000acc: 02f70733 mul a4,a4,a5 -80000ad0: fe842783 lw a5,-24(s0) -80000ad4: 00f707b3 add a5,a4,a5 -80000ad8: faf42e23 sw a5,-68(s0) -80000adc: fe842703 lw a4,-24(s0) -80000ae0: fc842783 lw a5,-56(s0) -80000ae4: 00f737b3 sltu a5,a4,a5 -80000ae8: 0ff7f793 andi a5,a5,255 -80000aec: faf42c23 sw a5,-72(s0) -80000af0: fb842783 lw a5,-72(s0) -80000af4: 0017b793 seqz a5,a5 -80000af8: faf40ba3 sb a5,-73(s0) -80000afc: fb744783 lbu a5,-73(s0) -80000b00: 00078f13 mv t5,a5 -80000b04: 800017b7 lui a5,0x80001 -80000b08: b4478f93 addi t6,a5,-1212 # 80000b44 -80000b0c: 000f206b 0xf206b -80000b10: 01ff707b 0x1ff707b -80000b14: fbc42783 lw a5,-68(s0) -80000b18: 00279793 slli a5,a5,0x2 -80000b1c: fcc42703 lw a4,-52(s0) -80000b20: 00f707b3 add a5,a4,a5 -80000b24: fe042703 lw a4,-32(s0) -80000b28: 00e7a023 sw a4,0(a5) -80000b2c: fe842783 lw a5,-24(s0) -80000b30: 00178793 addi a5,a5,1 -80000b34: fef42423 sw a5,-24(s0) -80000b38: 800017b7 lui a5,0x80001 -80000b3c: b4878e13 addi t3,a5,-1208 # 80000b48 -80000b40: 000e0067 jr t3 -80000b44: 00000013 nop -80000b48: 0000306b 0x306b -80000b4c: fe442783 lw a5,-28(s0) -80000b50: 00178793 addi a5,a5,1 -80000b54: fef42223 sw a5,-28(s0) -80000b58: fe442783 lw a5,-28(s0) -80000b5c: fec42703 lw a4,-20(s0) -80000b60: ece7ece3 bltu a5,a4,80000a38 <_vx_mat_mult+0x8c> -80000b64: 00000013 nop -80000b68: 05c12083 lw ra,92(sp) -80000b6c: 05812403 lw s0,88(sp) -80000b70: 06010113 addi sp,sp,96 -80000b74: 00008067 ret - -80000b78 : -80000b78: fc010113 addi sp,sp,-64 -80000b7c: 02112e23 sw ra,60(sp) -80000b80: 02812c23 sw s0,56(sp) -80000b84: 04010413 addi s0,sp,64 -80000b88: fca42e23 sw a0,-36(s0) -80000b8c: fcb42c23 sw a1,-40(s0) -80000b90: fcc42a23 sw a2,-44(s0) -80000b94: fcd42823 sw a3,-48(s0) -80000b98: fce42623 sw a4,-52(s0) -80000b9c: 810037b7 lui a5,0x81003 -80000ba0: fdc42703 lw a4,-36(s0) -80000ba4: 9ae7ac23 sw a4,-1608(a5) # 810029b8 -80000ba8: 810037b7 lui a5,0x81003 -80000bac: 9b878793 addi a5,a5,-1608 # 810029b8 -80000bb0: fd842703 lw a4,-40(s0) -80000bb4: 00e7a223 sw a4,4(a5) -80000bb8: 810037b7 lui a5,0x81003 -80000bbc: 9b878793 addi a5,a5,-1608 # 810029b8 -80000bc0: fd442703 lw a4,-44(s0) -80000bc4: 00e7a423 sw a4,8(a5) -80000bc8: 810037b7 lui a5,0x81003 -80000bcc: 9b878793 addi a5,a5,-1608 # 810029b8 -80000bd0: fcc42703 lw a4,-52(s0) -80000bd4: 00e7a623 sw a4,12(a5) -80000bd8: 810037b7 lui a5,0x81003 -80000bdc: 9b878793 addi a5,a5,-1608 # 810029b8 -80000be0: fd042703 lw a4,-48(s0) -80000be4: 00e7a823 sw a4,16(a5) -80000be8: dc4ff0ef jal ra,800001ac -80000bec: fea42423 sw a0,-24(s0) -80000bf0: fcc42703 lw a4,-52(s0) -80000bf4: fe842783 lw a5,-24(s0) -80000bf8: 02f757b3 divu a5,a4,a5 -80000bfc: fef42623 sw a5,-20(s0) -80000c00: fcc42703 lw a4,-52(s0) -80000c04: fe842783 lw a5,-24(s0) -80000c08: 02f777b3 remu a5,a4,a5 -80000c0c: 00078863 beqz a5,80000c1c -80000c10: fec42783 lw a5,-20(s0) -80000c14: 00178793 addi a5,a5,1 -80000c18: fef42623 sw a5,-20(s0) -80000c1c: 810037b7 lui a5,0x81003 -80000c20: 9b878793 addi a5,a5,-1608 # 810029b8 -80000c24: fec42703 lw a4,-20(s0) -80000c28: 00e7aa23 sw a4,20(a5) -80000c2c: fcc42703 lw a4,-52(s0) -80000c30: fe842783 lw a5,-24(s0) -80000c34: 02f76263 bltu a4,a5,80000c58 -80000c38: 810037b7 lui a5,0x81003 -80000c3c: 9b878693 addi a3,a5,-1608 # 810029b8 -80000c40: 800017b7 lui a5,0x80001 -80000c44: cb078613 addi a2,a5,-848 # 80000cb0 -80000c48: fe842583 lw a1,-24(s0) -80000c4c: fd042503 lw a0,-48(s0) -80000c50: fbcff0ef jal ra,8000040c -80000c54: 0200006f j 80000c74 -80000c58: 810037b7 lui a5,0x81003 -80000c5c: 9b878693 addi a3,a5,-1608 # 810029b8 -80000c60: 800017b7 lui a5,0x80001 -80000c64: cb078613 addi a2,a5,-848 # 80000cb0 -80000c68: fcc42583 lw a1,-52(s0) -80000c6c: fd042503 lw a0,-48(s0) -80000c70: f9cff0ef jal ra,8000040c -80000c74: d30ff0ef jal ra,800001a4 -80000c78: fea42223 sw a0,-28(s0) -80000c7c: fd042703 lw a4,-48(s0) -80000c80: fe442783 lw a5,-28(s0) -80000c84: 00e7f863 bgeu a5,a4,80000c94 -80000c88: fe442503 lw a0,-28(s0) -80000c8c: 86dff0ef jal ra,800004f8 -80000c90: 00c0006f j 80000c9c -80000c94: fd042503 lw a0,-48(s0) -80000c98: 861ff0ef jal ra,800004f8 -80000c9c: 00000013 nop -80000ca0: 03c12083 lw ra,60(sp) -80000ca4: 03812403 lw s0,56(sp) -80000ca8: 04010113 addi sp,sp,64 -80000cac: 00008067 ret - -80000cb0 <_vx_mat_add>: -80000cb0: fb010113 addi sp,sp,-80 -80000cb4: 04112623 sw ra,76(sp) -80000cb8: 04812423 sw s0,72(sp) -80000cbc: 05010413 addi s0,sp,80 -80000cc0: faa42e23 sw a0,-68(s0) -80000cc4: fab42c23 sw a1,-72(s0) -80000cc8: 8fdff0ef jal ra,800005c4 -80000ccc: fea42023 sw a0,-32(s0) -80000cd0: fe042783 lw a5,-32(s0) -80000cd4: 0007a783 lw a5,0(a5) -80000cd8: fcf42e23 sw a5,-36(s0) -80000cdc: fe042783 lw a5,-32(s0) -80000ce0: 0047a783 lw a5,4(a5) -80000ce4: fcf42c23 sw a5,-40(s0) -80000ce8: fe042783 lw a5,-32(s0) -80000cec: 0087a783 lw a5,8(a5) -80000cf0: fcf42a23 sw a5,-44(s0) -80000cf4: fe042783 lw a5,-32(s0) -80000cf8: 0147a783 lw a5,20(a5) -80000cfc: fef42623 sw a5,-20(s0) -80000d00: fec42703 lw a4,-20(s0) -80000d04: fbc42783 lw a5,-68(s0) -80000d08: 02f707b3 mul a5,a4,a5 -80000d0c: fef42423 sw a5,-24(s0) -80000d10: fec42783 lw a5,-20(s0) -80000d14: 00079a63 bnez a5,80000d28 <_vx_mat_add+0x78> -80000d18: 00100793 li a5,1 -80000d1c: fef42623 sw a5,-20(s0) -80000d20: fbc42783 lw a5,-68(s0) -80000d24: fef42423 sw a5,-24(s0) -80000d28: fe042783 lw a5,-32(s0) -80000d2c: 00c7a783 lw a5,12(a5) -80000d30: fcf42823 sw a5,-48(s0) -80000d34: fe042223 sw zero,-28(s0) -80000d38: 0c00006f j 80000df8 <_vx_mat_add+0x148> -80000d3c: fb842703 lw a4,-72(s0) -80000d40: fd042783 lw a5,-48(s0) -80000d44: 02f70733 mul a4,a4,a5 -80000d48: fe842783 lw a5,-24(s0) -80000d4c: 00f707b3 add a5,a4,a5 -80000d50: fcf42623 sw a5,-52(s0) -80000d54: fe842703 lw a4,-24(s0) -80000d58: fd042783 lw a5,-48(s0) -80000d5c: 00f737b3 sltu a5,a4,a5 -80000d60: 0ff7f793 andi a5,a5,255 -80000d64: fcf42423 sw a5,-56(s0) -80000d68: fc842783 lw a5,-56(s0) -80000d6c: 0017b793 seqz a5,a5 -80000d70: fcf403a3 sb a5,-57(s0) -80000d74: fc744783 lbu a5,-57(s0) -80000d78: 00078f13 mv t5,a5 -80000d7c: 800017b7 lui a5,0x80001 -80000d80: de478f93 addi t6,a5,-540 # 80000de4 -80000d84: 000f206b 0xf206b -80000d88: 01ff707b 0x1ff707b -80000d8c: fcc42783 lw a5,-52(s0) -80000d90: 00279793 slli a5,a5,0x2 -80000d94: fdc42703 lw a4,-36(s0) -80000d98: 00f707b3 add a5,a4,a5 -80000d9c: 0007a683 lw a3,0(a5) -80000da0: fcc42783 lw a5,-52(s0) -80000da4: 00279793 slli a5,a5,0x2 -80000da8: fd842703 lw a4,-40(s0) -80000dac: 00f707b3 add a5,a4,a5 -80000db0: 0007a703 lw a4,0(a5) -80000db4: fcc42783 lw a5,-52(s0) -80000db8: 00279793 slli a5,a5,0x2 -80000dbc: fd442603 lw a2,-44(s0) -80000dc0: 00f607b3 add a5,a2,a5 -80000dc4: 00e68733 add a4,a3,a4 -80000dc8: 00e7a023 sw a4,0(a5) -80000dcc: fe842783 lw a5,-24(s0) -80000dd0: 00178793 addi a5,a5,1 -80000dd4: fef42423 sw a5,-24(s0) -80000dd8: 800017b7 lui a5,0x80001 -80000ddc: de878e13 addi t3,a5,-536 # 80000de8 -80000de0: 000e0067 jr t3 -80000de4: 00000013 nop -80000de8: 0000306b 0x306b -80000dec: fe442783 lw a5,-28(s0) -80000df0: 00178793 addi a5,a5,1 -80000df4: fef42223 sw a5,-28(s0) -80000df8: fe442783 lw a5,-28(s0) -80000dfc: fec42703 lw a4,-20(s0) -80000e00: f2e7eee3 bltu a5,a4,80000d3c <_vx_mat_add+0x8c> -80000e04: 00000013 nop -80000e08: 04c12083 lw ra,76(sp) -80000e0c: 04812403 lw s0,72(sp) -80000e10: 05010113 addi sp,sp,80 -80000e14: 00008067 ret - -80000e18 : -80000e18: fc010113 addi sp,sp,-64 -80000e1c: 02112e23 sw ra,60(sp) -80000e20: 02812c23 sw s0,56(sp) -80000e24: 04010413 addi s0,sp,64 -80000e28: fca42e23 sw a0,-36(s0) -80000e2c: fcb42c23 sw a1,-40(s0) -80000e30: fcc42a23 sw a2,-44(s0) -80000e34: fcd42823 sw a3,-48(s0) -80000e38: fce42623 sw a4,-52(s0) -80000e3c: 810037b7 lui a5,0x81003 -80000e40: fdc42703 lw a4,-36(s0) -80000e44: 9ae7ac23 sw a4,-1608(a5) # 810029b8 -80000e48: 810037b7 lui a5,0x81003 -80000e4c: 9b878793 addi a5,a5,-1608 # 810029b8 -80000e50: fd842703 lw a4,-40(s0) -80000e54: 00e7a223 sw a4,4(a5) -80000e58: 810037b7 lui a5,0x81003 -80000e5c: 9b878793 addi a5,a5,-1608 # 810029b8 -80000e60: fd442703 lw a4,-44(s0) -80000e64: 00e7a423 sw a4,8(a5) -80000e68: 810037b7 lui a5,0x81003 -80000e6c: 9b878793 addi a5,a5,-1608 # 810029b8 -80000e70: fcc42703 lw a4,-52(s0) -80000e74: 00e7a623 sw a4,12(a5) -80000e78: 810037b7 lui a5,0x81003 -80000e7c: 9b878793 addi a5,a5,-1608 # 810029b8 -80000e80: fd042703 lw a4,-48(s0) -80000e84: 00e7a823 sw a4,16(a5) -80000e88: b24ff0ef jal ra,800001ac -80000e8c: fea42423 sw a0,-24(s0) -80000e90: fcc42703 lw a4,-52(s0) -80000e94: fe842783 lw a5,-24(s0) -80000e98: 02f757b3 divu a5,a4,a5 -80000e9c: fef42623 sw a5,-20(s0) -80000ea0: fcc42703 lw a4,-52(s0) -80000ea4: fe842783 lw a5,-24(s0) -80000ea8: 02f777b3 remu a5,a4,a5 -80000eac: 00078863 beqz a5,80000ebc -80000eb0: fec42783 lw a5,-20(s0) -80000eb4: 00178793 addi a5,a5,1 -80000eb8: fef42623 sw a5,-20(s0) -80000ebc: 810037b7 lui a5,0x81003 -80000ec0: 9b878793 addi a5,a5,-1608 # 810029b8 -80000ec4: fec42703 lw a4,-20(s0) -80000ec8: 00e7aa23 sw a4,20(a5) -80000ecc: fcc42703 lw a4,-52(s0) -80000ed0: fe842783 lw a5,-24(s0) -80000ed4: 02f76263 bltu a4,a5,80000ef8 -80000ed8: 810037b7 lui a5,0x81003 -80000edc: 9b878693 addi a3,a5,-1608 # 810029b8 -80000ee0: 800017b7 lui a5,0x80001 -80000ee4: f5078613 addi a2,a5,-176 # 80000f50 -80000ee8: fe842583 lw a1,-24(s0) -80000eec: fd042503 lw a0,-48(s0) -80000ef0: d1cff0ef jal ra,8000040c -80000ef4: 0200006f j 80000f14 -80000ef8: 810037b7 lui a5,0x81003 -80000efc: 9b878693 addi a3,a5,-1608 # 810029b8 -80000f00: 800017b7 lui a5,0x80001 -80000f04: f5078613 addi a2,a5,-176 # 80000f50 -80000f08: fcc42583 lw a1,-52(s0) -80000f0c: fd042503 lw a0,-48(s0) -80000f10: cfcff0ef jal ra,8000040c -80000f14: a90ff0ef jal ra,800001a4 -80000f18: fea42223 sw a0,-28(s0) -80000f1c: fd042703 lw a4,-48(s0) -80000f20: fe442783 lw a5,-28(s0) -80000f24: 00e7f863 bgeu a5,a4,80000f34 -80000f28: fe442503 lw a0,-28(s0) -80000f2c: dccff0ef jal ra,800004f8 -80000f30: 00c0006f j 80000f3c -80000f34: fd042503 lw a0,-48(s0) -80000f38: dc0ff0ef jal ra,800004f8 -80000f3c: 00000013 nop -80000f40: 03c12083 lw ra,60(sp) -80000f44: 03812403 lw s0,56(sp) -80000f48: 04010113 addi sp,sp,64 -80000f4c: 00008067 ret - -80000f50 <_vx_mat_sub>: -80000f50: fb010113 addi sp,sp,-80 -80000f54: 04112623 sw ra,76(sp) -80000f58: 04812423 sw s0,72(sp) -80000f5c: 05010413 addi s0,sp,80 -80000f60: faa42e23 sw a0,-68(s0) -80000f64: fab42c23 sw a1,-72(s0) -80000f68: e5cff0ef jal ra,800005c4 -80000f6c: fea42023 sw a0,-32(s0) -80000f70: fe042783 lw a5,-32(s0) -80000f74: 0007a783 lw a5,0(a5) -80000f78: fcf42e23 sw a5,-36(s0) -80000f7c: fe042783 lw a5,-32(s0) -80000f80: 0047a783 lw a5,4(a5) -80000f84: fcf42c23 sw a5,-40(s0) -80000f88: fe042783 lw a5,-32(s0) -80000f8c: 0087a783 lw a5,8(a5) -80000f90: fcf42a23 sw a5,-44(s0) -80000f94: fe042783 lw a5,-32(s0) -80000f98: 0147a783 lw a5,20(a5) -80000f9c: fef42623 sw a5,-20(s0) -80000fa0: fec42703 lw a4,-20(s0) -80000fa4: fbc42783 lw a5,-68(s0) -80000fa8: 02f707b3 mul a5,a4,a5 -80000fac: fef42423 sw a5,-24(s0) -80000fb0: fec42783 lw a5,-20(s0) -80000fb4: 00079a63 bnez a5,80000fc8 <_vx_mat_sub+0x78> -80000fb8: 00100793 li a5,1 -80000fbc: fef42623 sw a5,-20(s0) -80000fc0: fbc42783 lw a5,-68(s0) -80000fc4: fef42423 sw a5,-24(s0) -80000fc8: fe042783 lw a5,-32(s0) -80000fcc: 00c7a783 lw a5,12(a5) -80000fd0: fcf42823 sw a5,-48(s0) -80000fd4: fe042223 sw zero,-28(s0) -80000fd8: 0c00006f j 80001098 <_vx_mat_sub+0x148> -80000fdc: fb842703 lw a4,-72(s0) -80000fe0: fd042783 lw a5,-48(s0) -80000fe4: 02f70733 mul a4,a4,a5 -80000fe8: fe842783 lw a5,-24(s0) -80000fec: 00f707b3 add a5,a4,a5 -80000ff0: fcf42623 sw a5,-52(s0) -80000ff4: fe842703 lw a4,-24(s0) -80000ff8: fd042783 lw a5,-48(s0) -80000ffc: 00f737b3 sltu a5,a4,a5 -80001000: 0ff7f793 andi a5,a5,255 -80001004: fcf42423 sw a5,-56(s0) -80001008: fc842783 lw a5,-56(s0) -8000100c: 0017b793 seqz a5,a5 -80001010: fcf403a3 sb a5,-57(s0) -80001014: fc744783 lbu a5,-57(s0) -80001018: 00078f13 mv t5,a5 -8000101c: 800017b7 lui a5,0x80001 -80001020: 08478f93 addi t6,a5,132 # 80001084 -80001024: 000f206b 0xf206b -80001028: 01ff707b 0x1ff707b -8000102c: fcc42783 lw a5,-52(s0) -80001030: 00279793 slli a5,a5,0x2 -80001034: fdc42703 lw a4,-36(s0) -80001038: 00f707b3 add a5,a4,a5 -8000103c: 0007a683 lw a3,0(a5) -80001040: fcc42783 lw a5,-52(s0) -80001044: 00279793 slli a5,a5,0x2 -80001048: fd842703 lw a4,-40(s0) -8000104c: 00f707b3 add a5,a4,a5 -80001050: 0007a703 lw a4,0(a5) -80001054: fcc42783 lw a5,-52(s0) -80001058: 00279793 slli a5,a5,0x2 -8000105c: fd442603 lw a2,-44(s0) -80001060: 00f607b3 add a5,a2,a5 -80001064: 40e68733 sub a4,a3,a4 -80001068: 00e7a023 sw a4,0(a5) -8000106c: fe842783 lw a5,-24(s0) -80001070: 00178793 addi a5,a5,1 -80001074: fef42423 sw a5,-24(s0) -80001078: 800017b7 lui a5,0x80001 -8000107c: 08878e13 addi t3,a5,136 # 80001088 -80001080: 000e0067 jr t3 -80001084: 00000013 nop -80001088: 0000306b 0x306b -8000108c: fe442783 lw a5,-28(s0) -80001090: 00178793 addi a5,a5,1 -80001094: fef42223 sw a5,-28(s0) -80001098: fe442783 lw a5,-28(s0) -8000109c: fec42703 lw a4,-20(s0) -800010a0: f2e7eee3 bltu a5,a4,80000fdc <_vx_mat_sub+0x8c> -800010a4: 00000013 nop -800010a8: 04c12083 lw ra,76(sp) -800010ac: 04812403 lw s0,72(sp) -800010b0: 05010113 addi sp,sp,80 -800010b4: 00008067 ret - -800010b8 : -800010b8: fc010113 addi sp,sp,-64 -800010bc: 02112e23 sw ra,60(sp) -800010c0: 02812c23 sw s0,56(sp) -800010c4: 04010413 addi s0,sp,64 -800010c8: fca42e23 sw a0,-36(s0) -800010cc: fcb42c23 sw a1,-40(s0) -800010d0: fcc42a23 sw a2,-44(s0) -800010d4: fcd42823 sw a3,-48(s0) -800010d8: fce42623 sw a4,-52(s0) -800010dc: 810037b7 lui a5,0x81003 -800010e0: fdc42703 lw a4,-36(s0) -800010e4: 9ce7a823 sw a4,-1584(a5) # 810029d0 -800010e8: 810037b7 lui a5,0x81003 -800010ec: 9d078793 addi a5,a5,-1584 # 810029d0 -800010f0: fd842703 lw a4,-40(s0) -800010f4: 00e7a223 sw a4,4(a5) -800010f8: 810037b7 lui a5,0x81003 -800010fc: 9d078793 addi a5,a5,-1584 # 810029d0 -80001100: fd442703 lw a4,-44(s0) -80001104: 00e7a423 sw a4,8(a5) -80001108: 810037b7 lui a5,0x81003 -8000110c: 9d078793 addi a5,a5,-1584 # 810029d0 -80001110: fcc42703 lw a4,-52(s0) -80001114: 00e7a623 sw a4,12(a5) -80001118: 810037b7 lui a5,0x81003 -8000111c: 9d078793 addi a5,a5,-1584 # 810029d0 -80001120: fd042703 lw a4,-48(s0) -80001124: 00e7a823 sw a4,16(a5) -80001128: 884ff0ef jal ra,800001ac -8000112c: fea42423 sw a0,-24(s0) -80001130: fcc42703 lw a4,-52(s0) -80001134: fe842783 lw a5,-24(s0) -80001138: 02f757b3 divu a5,a4,a5 -8000113c: fef42623 sw a5,-20(s0) -80001140: fcc42703 lw a4,-52(s0) -80001144: fe842783 lw a5,-24(s0) -80001148: 02f777b3 remu a5,a4,a5 -8000114c: 00078863 beqz a5,8000115c -80001150: fec42783 lw a5,-20(s0) -80001154: 00178793 addi a5,a5,1 -80001158: fef42623 sw a5,-20(s0) -8000115c: 810037b7 lui a5,0x81003 -80001160: 9d078793 addi a5,a5,-1584 # 810029d0 -80001164: fec42703 lw a4,-20(s0) -80001168: 00e7aa23 sw a4,20(a5) -8000116c: fcc42703 lw a4,-52(s0) -80001170: fe842783 lw a5,-24(s0) -80001174: 02f76263 bltu a4,a5,80001198 -80001178: 810037b7 lui a5,0x81003 -8000117c: 9d078693 addi a3,a5,-1584 # 810029d0 -80001180: 800017b7 lui a5,0x80001 -80001184: 1f078613 addi a2,a5,496 # 800011f0 -80001188: fe842583 lw a1,-24(s0) -8000118c: fd042503 lw a0,-48(s0) -80001190: a7cff0ef jal ra,8000040c -80001194: 0200006f j 800011b4 -80001198: 810037b7 lui a5,0x81003 -8000119c: 9d078693 addi a3,a5,-1584 # 810029d0 -800011a0: 800017b7 lui a5,0x80001 -800011a4: 1f078613 addi a2,a5,496 # 800011f0 -800011a8: fcc42583 lw a1,-52(s0) -800011ac: fd042503 lw a0,-48(s0) -800011b0: a5cff0ef jal ra,8000040c -800011b4: ff1fe0ef jal ra,800001a4 -800011b8: fea42223 sw a0,-28(s0) -800011bc: fd042703 lw a4,-48(s0) -800011c0: fe442783 lw a5,-28(s0) -800011c4: 00e7f863 bgeu a5,a4,800011d4 -800011c8: fe442503 lw a0,-28(s0) -800011cc: b2cff0ef jal ra,800004f8 -800011d0: 00c0006f j 800011dc -800011d4: fd042503 lw a0,-48(s0) -800011d8: b20ff0ef jal ra,800004f8 -800011dc: 00000013 nop -800011e0: 03c12083 lw ra,60(sp) -800011e4: 03812403 lw s0,56(sp) -800011e8: 04010113 addi sp,sp,64 -800011ec: 00008067 ret - -800011f0 <_vx_e_mat_add>: -800011f0: fb010113 addi sp,sp,-80 -800011f4: 04112623 sw ra,76(sp) -800011f8: 04812423 sw s0,72(sp) -800011fc: 05010413 addi s0,sp,80 -80001200: faa42e23 sw a0,-68(s0) -80001204: fab42c23 sw a1,-72(s0) -80001208: bbcff0ef jal ra,800005c4 -8000120c: fea42023 sw a0,-32(s0) -80001210: fe042783 lw a5,-32(s0) -80001214: 0007a783 lw a5,0(a5) -80001218: fcf42e23 sw a5,-36(s0) -8000121c: fe042783 lw a5,-32(s0) -80001220: 0047a783 lw a5,4(a5) -80001224: 0007a783 lw a5,0(a5) -80001228: fcf42c23 sw a5,-40(s0) -8000122c: fe042783 lw a5,-32(s0) -80001230: 0087a783 lw a5,8(a5) -80001234: fcf42a23 sw a5,-44(s0) -80001238: fe042783 lw a5,-32(s0) -8000123c: 0147a783 lw a5,20(a5) -80001240: fef42623 sw a5,-20(s0) -80001244: fec42703 lw a4,-20(s0) -80001248: fbc42783 lw a5,-68(s0) -8000124c: 02f707b3 mul a5,a4,a5 -80001250: fef42423 sw a5,-24(s0) -80001254: fec42783 lw a5,-20(s0) -80001258: 00079a63 bnez a5,8000126c <_vx_e_mat_add+0x7c> -8000125c: 00100793 li a5,1 -80001260: fef42623 sw a5,-20(s0) -80001264: fbc42783 lw a5,-68(s0) -80001268: fef42423 sw a5,-24(s0) -8000126c: fe042783 lw a5,-32(s0) -80001270: 00c7a783 lw a5,12(a5) -80001274: fcf42823 sw a5,-48(s0) -80001278: fe042223 sw zero,-28(s0) -8000127c: 0b00006f j 8000132c <_vx_e_mat_add+0x13c> -80001280: fb842703 lw a4,-72(s0) -80001284: fd042783 lw a5,-48(s0) -80001288: 02f70733 mul a4,a4,a5 -8000128c: fe842783 lw a5,-24(s0) -80001290: 00f707b3 add a5,a4,a5 -80001294: fcf42623 sw a5,-52(s0) -80001298: fe842703 lw a4,-24(s0) -8000129c: fd042783 lw a5,-48(s0) -800012a0: 00f737b3 sltu a5,a4,a5 -800012a4: 0ff7f793 andi a5,a5,255 -800012a8: fcf42423 sw a5,-56(s0) -800012ac: fc842783 lw a5,-56(s0) -800012b0: 0017b793 seqz a5,a5 -800012b4: fcf403a3 sb a5,-57(s0) -800012b8: fc744783 lbu a5,-57(s0) -800012bc: 00078f13 mv t5,a5 -800012c0: 800017b7 lui a5,0x80001 -800012c4: 31878f93 addi t6,a5,792 # 80001318 -800012c8: 000f206b 0xf206b -800012cc: 01ff707b 0x1ff707b -800012d0: fcc42783 lw a5,-52(s0) -800012d4: 00279793 slli a5,a5,0x2 -800012d8: fdc42703 lw a4,-36(s0) -800012dc: 00f707b3 add a5,a4,a5 -800012e0: 0007a683 lw a3,0(a5) -800012e4: fcc42783 lw a5,-52(s0) -800012e8: 00279793 slli a5,a5,0x2 -800012ec: fd442703 lw a4,-44(s0) -800012f0: 00f707b3 add a5,a4,a5 -800012f4: fd842703 lw a4,-40(s0) -800012f8: 00e68733 add a4,a3,a4 -800012fc: 00e7a023 sw a4,0(a5) -80001300: fe842783 lw a5,-24(s0) -80001304: 00178793 addi a5,a5,1 -80001308: fef42423 sw a5,-24(s0) -8000130c: 800017b7 lui a5,0x80001 -80001310: 31c78e13 addi t3,a5,796 # 8000131c -80001314: 000e0067 jr t3 -80001318: 00000013 nop -8000131c: 0000306b 0x306b -80001320: fe442783 lw a5,-28(s0) -80001324: 00178793 addi a5,a5,1 -80001328: fef42223 sw a5,-28(s0) -8000132c: fe442783 lw a5,-28(s0) -80001330: fec42703 lw a4,-20(s0) -80001334: f4e7e6e3 bltu a5,a4,80001280 <_vx_e_mat_add+0x90> -80001338: 00000013 nop -8000133c: 04c12083 lw ra,76(sp) -80001340: 04812403 lw s0,72(sp) -80001344: 05010113 addi sp,sp,80 -80001348: 00008067 ret - -8000134c : -8000134c: fc010113 addi sp,sp,-64 -80001350: 02112e23 sw ra,60(sp) -80001354: 02812c23 sw s0,56(sp) -80001358: 04010413 addi s0,sp,64 -8000135c: fca42e23 sw a0,-36(s0) -80001360: fcb42c23 sw a1,-40(s0) -80001364: fcc42a23 sw a2,-44(s0) -80001368: fcd42823 sw a3,-48(s0) -8000136c: fce42623 sw a4,-52(s0) -80001370: 810037b7 lui a5,0x81003 -80001374: fdc42703 lw a4,-36(s0) -80001378: 9ce7a823 sw a4,-1584(a5) # 810029d0 -8000137c: 810037b7 lui a5,0x81003 -80001380: 9d078793 addi a5,a5,-1584 # 810029d0 -80001384: fd842703 lw a4,-40(s0) -80001388: 00e7a223 sw a4,4(a5) -8000138c: 810037b7 lui a5,0x81003 -80001390: 9d078793 addi a5,a5,-1584 # 810029d0 -80001394: fd442703 lw a4,-44(s0) -80001398: 00e7a423 sw a4,8(a5) -8000139c: 810037b7 lui a5,0x81003 -800013a0: 9d078793 addi a5,a5,-1584 # 810029d0 -800013a4: fcc42703 lw a4,-52(s0) -800013a8: 00e7a623 sw a4,12(a5) -800013ac: 810037b7 lui a5,0x81003 -800013b0: 9d078793 addi a5,a5,-1584 # 810029d0 -800013b4: fd042703 lw a4,-48(s0) -800013b8: 00e7a823 sw a4,16(a5) -800013bc: df1fe0ef jal ra,800001ac -800013c0: fea42423 sw a0,-24(s0) -800013c4: fcc42703 lw a4,-52(s0) -800013c8: fe842783 lw a5,-24(s0) -800013cc: 02f757b3 divu a5,a4,a5 -800013d0: fef42623 sw a5,-20(s0) -800013d4: fcc42703 lw a4,-52(s0) -800013d8: fe842783 lw a5,-24(s0) -800013dc: 02f777b3 remu a5,a4,a5 -800013e0: 00078863 beqz a5,800013f0 -800013e4: fec42783 lw a5,-20(s0) -800013e8: 00178793 addi a5,a5,1 -800013ec: fef42623 sw a5,-20(s0) -800013f0: 810037b7 lui a5,0x81003 -800013f4: 9d078793 addi a5,a5,-1584 # 810029d0 -800013f8: fec42703 lw a4,-20(s0) -800013fc: 00e7aa23 sw a4,20(a5) -80001400: fcc42703 lw a4,-52(s0) -80001404: fe842783 lw a5,-24(s0) -80001408: 02f76263 bltu a4,a5,8000142c -8000140c: 810037b7 lui a5,0x81003 -80001410: 9d078693 addi a3,a5,-1584 # 810029d0 -80001414: 800017b7 lui a5,0x80001 -80001418: 48478613 addi a2,a5,1156 # 80001484 -8000141c: fe842583 lw a1,-24(s0) -80001420: fd042503 lw a0,-48(s0) -80001424: fe9fe0ef jal ra,8000040c -80001428: 0200006f j 80001448 -8000142c: 810037b7 lui a5,0x81003 -80001430: 9d078693 addi a3,a5,-1584 # 810029d0 -80001434: 800017b7 lui a5,0x80001 -80001438: 48478613 addi a2,a5,1156 # 80001484 -8000143c: fcc42583 lw a1,-52(s0) -80001440: fd042503 lw a0,-48(s0) -80001444: fc9fe0ef jal ra,8000040c -80001448: d5dfe0ef jal ra,800001a4 -8000144c: fea42223 sw a0,-28(s0) -80001450: fd042703 lw a4,-48(s0) -80001454: fe442783 lw a5,-28(s0) -80001458: 00e7f863 bgeu a5,a4,80001468 -8000145c: fe442503 lw a0,-28(s0) -80001460: 898ff0ef jal ra,800004f8 -80001464: 00c0006f j 80001470 -80001468: fd042503 lw a0,-48(s0) -8000146c: 88cff0ef jal ra,800004f8 -80001470: 00000013 nop -80001474: 03c12083 lw ra,60(sp) -80001478: 03812403 lw s0,56(sp) -8000147c: 04010113 addi sp,sp,64 -80001480: 00008067 ret - -80001484 <_vx_e_mat_mult>: -80001484: fb010113 addi sp,sp,-80 -80001488: 04112623 sw ra,76(sp) -8000148c: 04812423 sw s0,72(sp) -80001490: 05010413 addi s0,sp,80 -80001494: faa42e23 sw a0,-68(s0) -80001498: fab42c23 sw a1,-72(s0) -8000149c: 928ff0ef jal ra,800005c4 -800014a0: fea42023 sw a0,-32(s0) -800014a4: fe042783 lw a5,-32(s0) -800014a8: 0007a783 lw a5,0(a5) -800014ac: fcf42e23 sw a5,-36(s0) -800014b0: fe042783 lw a5,-32(s0) -800014b4: 0047a783 lw a5,4(a5) -800014b8: 0007a783 lw a5,0(a5) -800014bc: fcf42c23 sw a5,-40(s0) -800014c0: fe042783 lw a5,-32(s0) -800014c4: 0087a783 lw a5,8(a5) -800014c8: fcf42a23 sw a5,-44(s0) -800014cc: fe042783 lw a5,-32(s0) -800014d0: 0147a783 lw a5,20(a5) -800014d4: fef42623 sw a5,-20(s0) -800014d8: fec42703 lw a4,-20(s0) -800014dc: fbc42783 lw a5,-68(s0) -800014e0: 02f707b3 mul a5,a4,a5 -800014e4: fef42423 sw a5,-24(s0) -800014e8: fec42783 lw a5,-20(s0) -800014ec: 00079a63 bnez a5,80001500 <_vx_e_mat_mult+0x7c> -800014f0: 00100793 li a5,1 -800014f4: fef42623 sw a5,-20(s0) -800014f8: fbc42783 lw a5,-68(s0) -800014fc: fef42423 sw a5,-24(s0) -80001500: fe042783 lw a5,-32(s0) -80001504: 00c7a783 lw a5,12(a5) -80001508: fcf42823 sw a5,-48(s0) -8000150c: fe042223 sw zero,-28(s0) -80001510: 0b00006f j 800015c0 <_vx_e_mat_mult+0x13c> -80001514: fb842703 lw a4,-72(s0) -80001518: fd042783 lw a5,-48(s0) -8000151c: 02f70733 mul a4,a4,a5 -80001520: fe842783 lw a5,-24(s0) -80001524: 00f707b3 add a5,a4,a5 -80001528: fcf42623 sw a5,-52(s0) -8000152c: fe842703 lw a4,-24(s0) -80001530: fd042783 lw a5,-48(s0) -80001534: 00f737b3 sltu a5,a4,a5 -80001538: 0ff7f793 andi a5,a5,255 -8000153c: fcf42423 sw a5,-56(s0) -80001540: fc842783 lw a5,-56(s0) -80001544: 0017b793 seqz a5,a5 -80001548: fcf403a3 sb a5,-57(s0) -8000154c: fc744783 lbu a5,-57(s0) -80001550: 00078f13 mv t5,a5 -80001554: 800017b7 lui a5,0x80001 -80001558: 5ac78f93 addi t6,a5,1452 # 800015ac -8000155c: 000f206b 0xf206b -80001560: 01ff707b 0x1ff707b -80001564: fcc42783 lw a5,-52(s0) -80001568: 00279793 slli a5,a5,0x2 -8000156c: fdc42703 lw a4,-36(s0) -80001570: 00f707b3 add a5,a4,a5 -80001574: 0007a683 lw a3,0(a5) -80001578: fcc42783 lw a5,-52(s0) -8000157c: 00279793 slli a5,a5,0x2 -80001580: fd442703 lw a4,-44(s0) -80001584: 00f707b3 add a5,a4,a5 -80001588: fd842703 lw a4,-40(s0) -8000158c: 02e68733 mul a4,a3,a4 -80001590: 00e7a023 sw a4,0(a5) -80001594: fe842783 lw a5,-24(s0) -80001598: 00178793 addi a5,a5,1 -8000159c: fef42423 sw a5,-24(s0) -800015a0: 800017b7 lui a5,0x80001 -800015a4: 5b078e13 addi t3,a5,1456 # 800015b0 -800015a8: 000e0067 jr t3 -800015ac: 00000013 nop -800015b0: 0000306b 0x306b -800015b4: fe442783 lw a5,-28(s0) -800015b8: 00178793 addi a5,a5,1 -800015bc: fef42223 sw a5,-28(s0) -800015c0: fe442783 lw a5,-28(s0) -800015c4: fec42703 lw a4,-20(s0) -800015c8: f4e7e6e3 bltu a5,a4,80001514 <_vx_e_mat_mult+0x90> -800015cc: 00000013 nop -800015d0: 04c12083 lw ra,76(sp) -800015d4: 04812403 lw s0,72(sp) -800015d8: 05010113 addi sp,sp,80 -800015dc: 00008067 ret - -800015e0 : -800015e0: fe010113 addi sp,sp,-32 -800015e4: 00812e23 sw s0,28(sp) -800015e8: 02010413 addi s0,sp,32 -800015ec: fe042623 sw zero,-20(s0) -800015f0: 0480006f j 80001638 -800015f4: 810037b7 lui a5,0x81003 -800015f8: fec42703 lw a4,-20(s0) -800015fc: 00271713 slli a4,a4,0x2 -80001600: 9e878793 addi a5,a5,-1560 # 810029e8 -80001604: 00f707b3 add a5,a4,a5 -80001608: 00300713 li a4,3 -8000160c: 00e7a023 sw a4,0(a5) -80001610: 810047b7 lui a5,0x81004 -80001614: fec42703 lw a4,-20(s0) -80001618: 00271713 slli a4,a4,0x2 -8000161c: 9e878793 addi a5,a5,-1560 # 810039e8 -80001620: 00f707b3 add a5,a4,a5 -80001624: 00200713 li a4,2 -80001628: 00e7a023 sw a4,0(a5) -8000162c: fec42783 lw a5,-20(s0) -80001630: 00178793 addi a5,a5,1 -80001634: fef42623 sw a5,-20(s0) -80001638: fec42703 lw a4,-20(s0) -8000163c: 0ff00793 li a5,255 -80001640: fae7dae3 bge a5,a4,800015f4 -80001644: 00000013 nop -80001648: 01c12403 lw s0,28(sp) -8000164c: 02010113 addi sp,sp,32 -80001650: 00008067 ret - -80001654 : -80001654: fd010113 addi sp,sp,-48 -80001658: 02112623 sw ra,44(sp) -8000165c: 02812423 sw s0,40(sp) -80001660: 03010413 addi s0,sp,48 -80001664: fca42e23 sw a0,-36(s0) -80001668: 810007b7 lui a5,0x81000 -8000166c: 11078513 addi a0,a5,272 # 81000110 -80001670: 8c0ff0ef jal ra,80000730 -80001674: fe042623 sw zero,-20(s0) -80001678: 0580006f j 800016d0 -8000167c: fec42783 lw a5,-20(s0) -80001680: 00078e63 beqz a5,8000169c -80001684: fec42783 lw a5,-20(s0) -80001688: 00f7f793 andi a5,a5,15 -8000168c: 00079863 bnez a5,8000169c -80001690: 810007b7 lui a5,0x81000 -80001694: 13478513 addi a0,a5,308 # 81000134 -80001698: 898ff0ef jal ra,80000730 -8000169c: fec42783 lw a5,-20(s0) -800016a0: 00279793 slli a5,a5,0x2 -800016a4: fdc42703 lw a4,-36(s0) -800016a8: 00f707b3 add a5,a4,a5 -800016ac: 0007a783 lw a5,0(a5) -800016b0: 00078513 mv a0,a5 -800016b4: 8b8ff0ef jal ra,8000076c -800016b8: 810007b7 lui a5,0x81000 -800016bc: 13878513 addi a0,a5,312 # 81000138 -800016c0: 870ff0ef jal ra,80000730 -800016c4: fec42783 lw a5,-20(s0) -800016c8: 00178793 addi a5,a5,1 -800016cc: fef42623 sw a5,-20(s0) -800016d0: fec42703 lw a4,-20(s0) -800016d4: 0ff00793 li a5,255 -800016d8: fae7d2e3 bge a5,a4,8000167c -800016dc: 810007b7 lui a5,0x81000 -800016e0: 13c78513 addi a0,a5,316 # 8100013c -800016e4: 84cff0ef jal ra,80000730 -800016e8: 00000013 nop -800016ec: 02c12083 lw ra,44(sp) -800016f0: 02812403 lw s0,40(sp) -800016f4: 03010113 addi sp,sp,48 -800016f8: 00008067 ret - -800016fc
: -800016fc: fe010113 addi sp,sp,-32 -80001700: 00112e23 sw ra,28(sp) -80001704: 00812c23 sw s0,24(sp) -80001708: 02010413 addi s0,sp,32 -8000170c: ed5ff0ef jal ra,800015e0 -80001710: 01000693 li a3,16 -80001714: 810057b7 lui a5,0x81005 -80001718: 9e878613 addi a2,a5,-1560 # 810049e8 -8000171c: 810047b7 lui a5,0x81004 -80001720: 9e878593 addi a1,a5,-1560 # 810039e8 -80001724: 810037b7 lui a5,0x81003 -80001728: 9e878513 addi a0,a5,-1560 # 810029e8 -8000172c: 94cff0ef jal ra,80000878 -80001730: 810007b7 lui a5,0x81000 -80001734: 16078513 addi a0,a5,352 # 81000160 -80001738: ff9fe0ef jal ra,80000730 -8000173c: 810057b7 lui a5,0x81005 -80001740: 9e878513 addi a0,a5,-1560 # 810049e8 -80001744: f11ff0ef jal ra,80001654 -80001748: 01000713 li a4,16 -8000174c: 01000693 li a3,16 -80001750: 810057b7 lui a5,0x81005 -80001754: 9e878613 addi a2,a5,-1560 # 810049e8 -80001758: 810047b7 lui a5,0x81004 -8000175c: 9e878593 addi a1,a5,-1560 # 810039e8 -80001760: 810037b7 lui a5,0x81003 -80001764: 9e878513 addi a0,a5,-1560 # 810029e8 -80001768: c10ff0ef jal ra,80000b78 -8000176c: 810007b7 lui a5,0x81000 -80001770: 17c78513 addi a0,a5,380 # 8100017c -80001774: fbdfe0ef jal ra,80000730 -80001778: 810057b7 lui a5,0x81005 -8000177c: 9e878513 addi a0,a5,-1560 # 810049e8 -80001780: ed5ff0ef jal ra,80001654 -80001784: 01000713 li a4,16 -80001788: 01000693 li a3,16 -8000178c: 810057b7 lui a5,0x81005 -80001790: 9e878613 addi a2,a5,-1560 # 810049e8 -80001794: 810047b7 lui a5,0x81004 -80001798: 9e878593 addi a1,a5,-1560 # 810039e8 -8000179c: 810037b7 lui a5,0x81003 -800017a0: 9e878513 addi a0,a5,-1560 # 810029e8 -800017a4: e74ff0ef jal ra,80000e18 -800017a8: 810007b7 lui a5,0x81000 -800017ac: 19078513 addi a0,a5,400 # 81000190 -800017b0: f81fe0ef jal ra,80000730 -800017b4: 810057b7 lui a5,0x81005 -800017b8: 9e878513 addi a0,a5,-1560 # 810049e8 -800017bc: e99ff0ef jal ra,80001654 -800017c0: 00300793 li a5,3 -800017c4: fef42623 sw a5,-20(s0) -800017c8: fec40593 addi a1,s0,-20 -800017cc: 01000713 li a4,16 -800017d0: 01000693 li a3,16 -800017d4: 810057b7 lui a5,0x81005 -800017d8: 9e878613 addi a2,a5,-1560 # 810049e8 -800017dc: 810057b7 lui a5,0x81005 -800017e0: 9e878513 addi a0,a5,-1560 # 810049e8 -800017e4: 8d5ff0ef jal ra,800010b8 -800017e8: 810007b7 lui a5,0x81000 -800017ec: 1a878513 addi a0,a5,424 # 810001a8 -800017f0: f41fe0ef jal ra,80000730 -800017f4: 810057b7 lui a5,0x81005 -800017f8: 9e878513 addi a0,a5,-1560 # 810049e8 -800017fc: e59ff0ef jal ra,80001654 -80001800: fec40593 addi a1,s0,-20 -80001804: 01000713 li a4,16 -80001808: 01000693 li a3,16 -8000180c: 810057b7 lui a5,0x81005 -80001810: 9e878613 addi a2,a5,-1560 # 810049e8 -80001814: 810057b7 lui a5,0x81005 -80001818: 9e878513 addi a0,a5,-1560 # 810049e8 -8000181c: b31ff0ef jal ra,8000134c -80001820: 810007b7 lui a5,0x81000 -80001824: 1a878513 addi a0,a5,424 # 810001a8 -80001828: f09fe0ef jal ra,80000730 -8000182c: 810057b7 lui a5,0x81005 -80001830: 9e878513 addi a0,a5,-1560 # 810049e8 -80001834: e21ff0ef jal ra,80001654 -80001838: 00000793 li a5,0 -8000183c: 00078513 mv a0,a5 -80001840: 01c12083 lw ra,28(sp) -80001844: 01812403 lw s0,24(sp) -80001848: 02010113 addi sp,sp,32 -8000184c: 00008067 ret - -Disassembly of section .rodata: - -81000000 <.rodata>: -81000000: 0030 addi a2,sp,8 -81000002: 0000 unimp -81000004: 0031 c.nop 12 -81000006: 0000 unimp -81000008: 0032 c.slli zero,0xc -8100000a: 0000 unimp -8100000c: 00000033 add zero,zero,zero -81000010: 0034 addi a3,sp,8 -81000012: 0000 unimp -81000014: 0035 c.nop 13 -81000016: 0000 unimp -81000018: 0036 c.slli zero,0xd -8100001a: 0000 unimp -8100001c: 00000037 lui zero,0x0 -81000020: 0038 addi a4,sp,8 -81000022: 0000 unimp -81000024: 0039 c.nop 14 -81000026: 0000 unimp -81000028: 0061 c.nop 24 -8100002a: 0000 unimp -8100002c: 0062 c.slli zero,0x18 -8100002e: 0000 unimp -81000030: 00000063 beqz zero,81000030 -81000034: 0064 addi s1,sp,12 -81000036: 0000 unimp -81000038: 0065 c.nop 25 -8100003a: 0000 unimp -8100003c: 0066 c.slli zero,0x19 -8100003e: 0000 unimp -81000040: 0030 addi a2,sp,8 -81000042: 0000 unimp -81000044: 0031 c.nop 12 -81000046: 0000 unimp -81000048: 0032 c.slli zero,0xc -8100004a: 0000 unimp -8100004c: 00000033 add zero,zero,zero -81000050: 0034 addi a3,sp,8 -81000052: 0000 unimp -81000054: 0035 c.nop 13 -81000056: 0000 unimp -81000058: 0036 c.slli zero,0xd -8100005a: 0000 unimp -8100005c: 00000037 lui zero,0x0 -81000060: 0038 addi a4,sp,8 -81000062: 0000 unimp -81000064: 0039 c.nop 14 -81000066: 0000 unimp -81000068: 0061 c.nop 24 -8100006a: 0000 unimp -8100006c: 0062 c.slli zero,0x18 -8100006e: 0000 unimp -81000070: 00000063 beqz zero,81000070 -81000074: 0064 addi s1,sp,12 -81000076: 0000 unimp -81000078: 0065 c.nop 25 -8100007a: 0000 unimp -8100007c: 0066 c.slli zero,0x19 -8100007e: 0000 unimp -81000080: 000a c.slli zero,0x2 -81000082: 0000 unimp -81000084: 0030 addi a2,sp,8 -81000086: 0000 unimp -81000088: 0031 c.nop 12 -8100008a: 0000 unimp -8100008c: 0032 c.slli zero,0xc -8100008e: 0000 unimp -81000090: 00000033 add zero,zero,zero -81000094: 0034 addi a3,sp,8 -81000096: 0000 unimp -81000098: 0035 c.nop 13 -8100009a: 0000 unimp -8100009c: 0036 c.slli zero,0xd -8100009e: 0000 unimp -810000a0: 00000037 lui zero,0x0 -810000a4: 0038 addi a4,sp,8 -810000a6: 0000 unimp -810000a8: 0039 c.nop 14 -810000aa: 0000 unimp -810000ac: 0061 c.nop 24 -810000ae: 0000 unimp -810000b0: 0062 c.slli zero,0x18 -810000b2: 0000 unimp -810000b4: 00000063 beqz zero,810000b4 -810000b8: 0064 addi s1,sp,12 -810000ba: 0000 unimp -810000bc: 0065 c.nop 25 -810000be: 0000 unimp -810000c0: 0066 c.slli zero,0x19 -810000c2: 0000 unimp -810000c4: 7366664f fnmadd.d fa2,fa2,fs6,fa4,unknown -810000c8: 7465 lui s0,0xffff9 -810000ca: 203a fld ft0,392(sp) -810000cc: 0000 unimp -810000ce: 0000 unimp -810000d0: 0030 addi a2,sp,8 -810000d2: 0000 unimp -810000d4: 0031 c.nop 12 -810000d6: 0000 unimp -810000d8: 0032 c.slli zero,0xc -810000da: 0000 unimp -810000dc: 00000033 add zero,zero,zero -810000e0: 0034 addi a3,sp,8 -810000e2: 0000 unimp -810000e4: 0035 c.nop 13 -810000e6: 0000 unimp -810000e8: 0036 c.slli zero,0xd -810000ea: 0000 unimp -810000ec: 00000037 lui zero,0x0 -810000f0: 0038 addi a4,sp,8 -810000f2: 0000 unimp -810000f4: 0039 c.nop 14 -810000f6: 0000 unimp -810000f8: 0061 c.nop 24 -810000fa: 0000 unimp -810000fc: 0062 c.slli zero,0x18 -810000fe: 0000 unimp -81000100: 00000063 beqz zero,81000100 -81000104: 0064 addi s1,sp,12 -81000106: 0000 unimp -81000108: 0065 c.nop 25 -8100010a: 0000 unimp -8100010c: 0066 c.slli zero,0x19 -8100010e: 0000 unimp -81000110: 2d2d jal 8100074a -81000112: 2d2d jal 8100074c -81000114: 2d2d jal 8100074e -81000116: 2d2d jal 81000750 -81000118: 2d2d jal 81000752 -8100011a: 2d2d jal 81000754 -8100011c: 2d2d jal 81000756 -8100011e: 2d2d jal 81000758 -81000120: 2d2d jal 8100075a -81000122: 2d2d jal 8100075c -81000124: 2d2d jal 8100075e -81000126: 2d2d jal 81000760 -81000128: 2d2d jal 81000762 -8100012a: 2d2d jal 81000764 -8100012c: 2d2d jal 81000766 -8100012e: 0a2d addi s4,s4,11 -81000130: 0000 unimp -81000132: 0000 unimp -81000134: 000a c.slli zero,0x2 -81000136: 0000 unimp -81000138: 0020 addi s0,sp,8 -8100013a: 0000 unimp -8100013c: 2d0a fld fs10,128(sp) -8100013e: 2d2d jal 81000778 -81000140: 2d2d jal 8100077a -81000142: 2d2d jal 8100077c -81000144: 2d2d jal 8100077e -81000146: 2d2d jal 81000780 -81000148: 2d2d jal 81000782 -8100014a: 2d2d jal 81000784 -8100014c: 2d2d jal 81000786 -8100014e: 2d2d jal 81000788 -81000150: 2d2d jal 8100078a -81000152: 2d2d jal 8100078c -81000154: 2d2d jal 8100078e -81000156: 2d2d jal 81000790 -81000158: 2d2d jal 81000792 -8100015a: 2d2d jal 81000794 -8100015c: 000a c.slli zero,0x2 -8100015e: 0000 unimp -81000160: 0a0a slli s4,s4,0x2 -81000162: 614d addi sp,sp,176 -81000164: 7274 flw fa3,100(a2) -81000166: 7869 lui a6,0xffffa -81000168: 6d20 flw fs0,88(a0) -8100016a: 6c75 lui s8,0x1d -8100016c: 6974 flw fa3,84(a0) -8100016e: 6c70 flw fa2,92(s0) -81000170: 6369 lui t1,0x1a -81000172: 7461 lui s0,0xffff8 -81000174: 6f69 lui t5,0x1a -81000176: 0a6e slli s4,s4,0x1b -81000178: 0000 unimp -8100017a: 0000 unimp -8100017c: 0a0a slli s4,s4,0x2 -8100017e: 614d addi sp,sp,176 -81000180: 7274 flw fa3,100(a2) -81000182: 7869 lui a6,0xffffa -81000184: 4120 lw s0,64(a0) -81000186: 6464 flw fs1,76(s0) -81000188: 7469 lui s0,0xffffa -8100018a: 6f69 lui t5,0x1a -8100018c: 0a6e slli s4,s4,0x1b -8100018e: 0000 unimp -81000190: 0a0a slli s4,s4,0x2 -81000192: 614d addi sp,sp,176 -81000194: 7274 flw fa3,100(a2) -81000196: 7869 lui a6,0xffffa -81000198: 5320 lw s0,96(a4) -8100019a: 6275 lui tp,0x1d -8100019c: 7274 flw fa3,100(a2) -8100019e: 6361 lui t1,0x18 -810001a0: 6974 flw fa3,84(a0) -810001a2: 000a6e6f jal t3,810a61a2 -810001a6: 0000 unimp -810001a8: 0a0a slli s4,s4,0x2 -810001aa: 614d addi sp,sp,176 -810001ac: 7274 flw fa3,100(a2) -810001ae: 7869 lui a6,0xffffa -810001b0: 4520 lw s0,72(a0) -810001b2: 656c flw fa1,76(a0) -810001b4: 656d lui a0,0x1b -810001b6: 746e flw fs0,248(sp) -810001b8: 4120 lw s0,64(a0) -810001ba: 6464 flw fs1,76(s0) -810001bc: 7469 lui s0,0xffffa -810001be: 6f69 lui t5,0x1a -810001c0: 0a6e slli s4,s4,0x1b - ... - -Disassembly of section .data: - -810001c4 : -810001c4: 0000 unimp -810001c6: 8100 0x8100 -810001c8: 0004 0x4 -810001ca: 8100 0x8100 -810001cc: 0008 0x8 -810001ce: 8100 0x8100 -810001d0: 000c 0xc -810001d2: 8100 0x8100 -810001d4: 0010 0x10 -810001d6: 8100 0x8100 -810001d8: 0014 0x14 -810001da: 8100 0x8100 -810001dc: 0018 0x18 -810001de: 8100 0x8100 -810001e0: 001c 0x1c -810001e2: 8100 0x8100 -810001e4: 0020 addi s0,sp,8 -810001e6: 8100 0x8100 -810001e8: 0024 addi s1,sp,8 -810001ea: 8100 0x8100 -810001ec: 0028 addi a0,sp,8 -810001ee: 8100 0x8100 -810001f0: 002c addi a1,sp,8 -810001f2: 8100 0x8100 -810001f4: 0030 addi a2,sp,8 -810001f6: 8100 0x8100 -810001f8: 0034 addi a3,sp,8 -810001fa: 8100 0x8100 -810001fc: 0038 addi a4,sp,8 -810001fe: 8100 0x8100 -81000200: 003c addi a5,sp,8 -81000202: 8100 0x8100 - -81000204 : -81000204: 0040 addi s0,sp,4 -81000206: 8100 0x8100 -81000208: 0044 addi s1,sp,4 -8100020a: 8100 0x8100 -8100020c: 0048 addi a0,sp,4 -8100020e: 8100 0x8100 -81000210: 004c addi a1,sp,4 -81000212: 8100 0x8100 -81000214: 0050 addi a2,sp,4 -81000216: 8100 0x8100 -81000218: 0054 addi a3,sp,4 -8100021a: 8100 0x8100 -8100021c: 0058 addi a4,sp,4 -8100021e: 8100 0x8100 -81000220: 005c addi a5,sp,4 -81000222: 8100 0x8100 -81000224: 0060 addi s0,sp,12 -81000226: 8100 0x8100 -81000228: 0064 addi s1,sp,12 -8100022a: 8100 0x8100 -8100022c: 0068 addi a0,sp,12 -8100022e: 8100 0x8100 -81000230: 006c addi a1,sp,12 -81000232: 8100 0x8100 -81000234: 0070 addi a2,sp,12 -81000236: 8100 0x8100 -81000238: 0074 addi a3,sp,12 -8100023a: 8100 0x8100 -8100023c: 0078 addi a4,sp,12 -8100023e: 8100 0x8100 -81000240: 007c addi a5,sp,12 -81000242: 8100 0x8100 - -81000244 : -81000244: 0084 addi s1,sp,64 -81000246: 8100 0x8100 -81000248: 0088 addi a0,sp,64 -8100024a: 8100 0x8100 -8100024c: 008c addi a1,sp,64 -8100024e: 8100 0x8100 -81000250: 0090 addi a2,sp,64 -81000252: 8100 0x8100 -81000254: 0094 addi a3,sp,64 -81000256: 8100 0x8100 -81000258: 0098 addi a4,sp,64 -8100025a: 8100 0x8100 -8100025c: 009c addi a5,sp,64 -8100025e: 8100 0x8100 -81000260: 00a0 addi s0,sp,72 -81000262: 8100 0x8100 -81000264: 00a4 addi s1,sp,72 -81000266: 8100 0x8100 -81000268: 00a8 addi a0,sp,72 -8100026a: 8100 0x8100 -8100026c: 00ac addi a1,sp,72 -8100026e: 8100 0x8100 -81000270: 00b0 addi a2,sp,72 -81000272: 8100 0x8100 -81000274: 00b4 addi a3,sp,72 -81000276: 8100 0x8100 -81000278: 00b8 addi a4,sp,72 -8100027a: 8100 0x8100 -8100027c: 00bc addi a5,sp,72 -8100027e: 8100 0x8100 -81000280: 00c0 addi s0,sp,68 -81000282: 8100 0x8100 - -81000284 : -81000284: 00d0 addi a2,sp,68 -81000286: 8100 0x8100 -81000288: 00d4 addi a3,sp,68 -8100028a: 8100 0x8100 -8100028c: 00d8 addi a4,sp,68 -8100028e: 8100 0x8100 -81000290: 00dc addi a5,sp,68 -81000292: 8100 0x8100 -81000294: 00e0 addi s0,sp,76 -81000296: 8100 0x8100 -81000298: 00e4 addi s1,sp,76 -8100029a: 8100 0x8100 -8100029c: 00e8 addi a0,sp,76 -8100029e: 8100 0x8100 -810002a0: 00ec addi a1,sp,76 -810002a2: 8100 0x8100 -810002a4: 00f0 addi a2,sp,76 -810002a6: 8100 0x8100 -810002a8: 00f4 addi a3,sp,76 -810002aa: 8100 0x8100 -810002ac: 00f8 addi a4,sp,76 -810002ae: 8100 0x8100 -810002b0: 00fc addi a5,sp,76 -810002b2: 8100 0x8100 -810002b4: 0100 addi s0,sp,128 -810002b6: 8100 0x8100 -810002b8: 0104 addi s1,sp,128 -810002ba: 8100 0x8100 -810002bc: 0108 addi a0,sp,128 -810002be: 8100 0x8100 -810002c0: 010c addi a1,sp,128 -810002c2: 8100 0x8100 - -Disassembly of section .bss: - -810002c4 : - ... - -810002e0 : -810002e0: 0000 unimp - ... - -810002e4 : - ... - -81000364 : - ... - -81002984 : - ... - -810029a0 : -810029a0: 0000 unimp - ... - -810029a4 : - ... - -810029b8 : - ... - -810029d0 : - ... - -810029e8 : - ... - -810039e8 : - ... - -810049e8 : - ... - -810059e8 : - ... - -81005a04 : -81005a04: 0000 unimp - ... - -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/emulator/vortex_software/vortex_test.elf b/emulator/vortex_software/vortex_test.elf deleted file mode 100755 index 6482f6dd..00000000 Binary files a/emulator/vortex_software/vortex_test.elf and /dev/null differ diff --git a/emulator/vortex_software/vortex_test.hex b/emulator/vortex_software/vortex_test.hex deleted file mode 100644 index 669b4b87..00000000 --- a/emulator/vortex_software/vortex_test.hex +++ /dev/null @@ -1,438 +0,0 @@ -:0200000480007A -:1000000013054000731005021305800073101502DC -:10001000731040F17310103037F1FF7FEF0080193B -:10002000EF10C06D73000000938B0600130D0700E6 -:10003000130F01009303050013051000635C7500A6 -:1000400013010180130305006B5003001305150015 -:100050006FF0DFFE13010F0013050000930F060081 -:10006000938D0300EBE0BF01170500001305051B8E -:100070006B40050017030000130343FB6B000300F4 -:1000800067800000170200011302022623200200ED -:100090002322120023242200232632002328420098 -:1000A000232A5200232C6200232E72002320820276 -:1000B000232292022324A2022326B2022328C20270 -:1000C000232AD202232CE202232EF202232002054D -:1000D0002322120523242205232632052328420544 -:1000E000232A5205232C6205232E72052320820722 -:1000F000232292072324A2072326B2072328C2071C -:10010000232AD207232CE207232EF2071302100022 -:1001100067800000170200011302021D0320020085 -:1001200083204200032182008321C20003220201B6 -:1001300083224201032382018323C201032402029A -:1001400083244202032582028325C202032602037E -:1001500083264203032782038327C2030328020462 -:1001600083284204032982048329C204032A020546 -:10017000832A4205032B8205832BC205032C02062A -:10018000832C4206032D8206832DC206032E02070E -:10019000832E4207032F8207832FC207130200001A -:1001A000678000007325000267800000732510023D -:1001B00067800000130101FE232E1100232C810013 -:1001C00013040102232604FE6F0000030327C4FE6C -:1001D0009307404C3307F702B707008193874736F0 -:1001E000B307F70013850700EF0040408327C4FEE4 -:1001F000938717002326F4FE0327C4FE930770009D -:10020000E3D6E7FC130000008320C1010324810131 -:100210001301010267800000130101FD2326110272 -:10022000232481022322A1031304010313070D00D9 -:100230009307404C3307F702B7070081938747368F -:10024000B307F70013850700EF00804B9307050005 -:10025000638A070213070D00B707008113172700F1 -:100260009387472CB307F7001307100023A0E7007C -:1002700093070D0063960700EFF0DFE96F0080053C -:100280007300000013070D009307404C3307F7027B -:10029000B707008193874736B307F700130784FD3C -:1002A0009305070013850700EF00003D832704FE38 -:1002B000138107008327C4FD832584FD032644FEA4 -:1002C000832684FE0327C4FE13850700EFF0DFD5E5 -:1002D000730000008320C10203248102032D410228 -:1002E0001301010367800000130101FB23261104A1 -:1002F0002324810413040105EFF0DFEA2324A4FE84 -:1003000093090100930710002326F4FE6F004008B4 -:100310000327C4FE9307404C3307F702B707008159 -:1003200093874736B307F70013850700EF00403D7A -:1003300093070500639807040327C4FE9307404C06 -:100340003307F702B707008193874736B307F700F3 -:10035000130704FD9305070013850700EF00C03164 -:10036000832784FD13810700832744FD832504FD33 -:100370000326C4FD832604FE032744FE13850700DD -:10038000EFF05FCF8327C4FE938717002326F4FE88 -:100390008327C4FE032784FEE3ECE7F613810900FC -:1003A000EFF05FCE9307020063880704B707008170 -:1003B00013854736EF00C03493070500639E07029C -:1003C000930784FB93850700B707008113854736A1 -:1003D000EF00802A832704FC138107008327C4FBD6 -:1003E000832584FB032644FC832684FC0327C4FC6A -:1003F00013850700EFF05FC3130000008320C104E2 -:10040000032481041301010567800000130101FB2F -:10041000232611042324810413040105232EA4FAA6 -:10042000232CB4FA232AC4FA2328D4FAEFF09FD855 -:10043000EFF05FD72322A4FE13090100232604FE58 -:10044000232404FE6F00C008B709FFFF3301310108 -:10045000832784FE2326F4FC832784FB2328F4FCD3 -:1004600093070100232AF4FC832744FB232CF4FC8C -:10047000832704FB232EF4FC8327C4FE2320F4FEF1 -:100480000327C4FE9307404C3307F702B7070081E8 -:1004900093874736B307F7001307C4FC930507009B -:1004A00013850700EF00C0168327C4FE938717004B -:1004B0002326F4FE8327C4FE032744FE63E4E700FB -:1004C000232604FE832784FE938717002324F4FE4B -:1004D000032784FE8327C4FBE368F7F613010900B2 -:1004E000EFF09FE0130000008320C1040324810487 -:1004F0001301010567800000130101FD232611028D -:100500002324810213040103232EA4FCEFF09FC9CE -:100510002320A4FE232604FE6F004005232604FEAC -:10052000232404FE6F00C003B7070081032784FE65 -:10053000131727009387472CB307F70003A707007B -:10054000930710006318F7008327C4FE93871700F2 -:100550002326F4FE832784FE938717002324F4FECA -:10056000832784FE032704FEE3E0E7FC0327C4FEA1 -:100570008327C4FDE314F7FA232204FE6F008002F0 -:10058000B7070081032744FE131727009387472CE2 -:10059000B307F70023A00700832744FE93871700C3 -:1005A0002322F4FE832744FE032704FEE3EAE7FC4C -:1005B000130000008320C102032481021301010300 -:1005C00067800000130101FF2326810023247101AD -:1005D0001304010193870B00138507000324C10056 -:1005E000832B810013010101678000009302050045 -:1005F000130300009303700023A0620023A2620093 -:1006000023A4620023A6720023A862006780000072 -:100610009302050003A382001303130023A46200C6 -:100620001383420183AE420093935E003303730051 -:1006300003AE05002320C30103AE45002322C301FE -:1006400003AE85002324C30103AEC5002326C301E6 -:1006500003AE05012328C30103AE4501232AC301CC -:10066000938E1E00130F20036394EE01930E00007F -:1006700023A2D201678000009302050003A3820039 -:100680001303F3FF23A462001383420183AE02002D -:10069000930F2003138F0E00130F1F006314FF012D -:1006A000130F000023A0E20193935E003303730055 -:1006B000032E030023A0C501032E430023A2C5017E -:1006C000032E830023A4C501032EC30023A6C50166 -:1006D000032E030123A8C501032E430123AAC5014C -:1006E000678000009302050003A382001305000049 -:1006F000130E200363146E001305150067800000BD -:100700009302050003A3820013050000130E0000EE -:1007100063146E0013051500678000009302050046 -:1007200003A3C20083A3020133B563006780000006 -:10073000130141FF232011002322B100834505004E -:1007400063880500EF00C001130515006FF01FFF5F -:1007500083200100832541001301C1006780000050 -:10076000B708010023A0B80067800000130101FD55 -:10077000232611022324810213040103232EA4FC47 -:100780000327C4FD9307F00063E4E702B707008185 -:100790000327C4FD1317270093874720B307F700EB -:1007A00083A7070013850700EFF09FF86F0040074D -:1007B000930700022326F4FEA30504FE8327C4FE4C -:1007C0009387C7FF0327C4FDB357F70093F7F700DC -:1007D0002322F4FE832744FE63860700930710005C -:1007E000A305F4FE8347B4FE63820702B7070081C6 -:1007F000032744FE1317270093874720B307F7000A -:1008000083A7070013850700EFF09FF28327C4FE3C -:100810009387C7FF2326F4FE8327C4FEE340F0FA44 -:100820008320C102032481021301010367800000B9 -:10083000130101FE232E1100232C81001304010259 -:100840002326A4FE2324B4FE0325C4FEEFF05FEEAE -:10085000032584FEEFF09FF1B70700811385070899 -:10086000EFF01FED130000008320C101032481017C -:100870001301010267800000130101FD232611020C -:100880002324810213040103232EA4FC232CB4FC93 -:10089000232AC4FC2328D4FCB73700810327C4FDD6 -:1008A00023A2E79AB73700819387479A032784FDED -:1008B00023A2E700B73700819387479A032744FDB7 -:1008C00023A4E700B73700819387479A032704FDE5 -:1008D00023A6E700EFF09F8D2324A4FE032704FD49 -:1008E000832784FEB357F7022326F4FE032704FD73 -:1008F000832784FEB377F702638807008327C4FE4B -:10090000938717002326F4FE8325C4FEB7070081D2 -:100910001385470CEFF0DFF1B73700819387479AD3 -:100920000327C4FE23A8E700032704FD832784FED2 -:100930006362F702B73700819386479AB717008042 -:100940001386C79A832584FE032504FDEFF01FACB0 -:100950006F000002B73700819386479AB71700806F -:100960001386C79A832504FD032504FDEFF01FAA13 -:10097000EFF05F832322A4FE032704FD832744FEB8 -:1009800063F8E700032544FEEFF01FB76F00C000D7 -:10099000032504FDEFF05FB6130000008320C102C1 -:1009A000032481021301010367800000130101FA8F -:1009B000232E1104232C8104130401062326A4FAF8 -:1009C0002324B4FAEFF01FC0232CA4FC832784FD5A -:1009D00083A70700232AF4FC832784FD83A747000D -:1009E0002328F4FC832784FD83A787002326F4FCB7 -:1009F000832784FD83A707012326F4FE0327C4FE73 -:100A00008327C4FAB307F7022324F4FE8327C4FE26 -:100A1000639A0700930710002326F4FE8327C4FA85 -:100A20002324F4FE832784FD83A7C7002324F4FC3A -:100A3000232204FE6F004012232004FE232E04FC18 -:100A40006F008007032784FA832784FCB307F7022B -:100A50000327C4FDB307F7002322F4FC032784FC1B -:100A60008327C4FDB307F702032784FEB307F7000B -:100A70002320F4FC832744FC93972700032744FD9D -:100A8000B307F70003A70700832704FC9397270009 -:100A9000832604FDB387F60083A70700B307F70298 -:100AA000032704FEB307F7002320F4FE8327C4FDC9 -:100AB00093871700232EF4FC0327C4FD832784FCAF -:100AC000E362F7F8032784FA832784FC3307F702ED -:100AD000832784FEB307F700232EF4FA032784FE4E -:100AE000832784FCB337F70093F7F70F232CF4FA2E -:100AF000832784FB93B71700A30BF4FA834774FB97 -:100B0000138F0700B7170080938F47B46B200F0037 -:100B10007B70FF018327C4FB939727000327C4FC46 -:100B2000B307F700032704FE23A0E700832784FE12 -:100B3000938717002324F4FEB7170080138E87B421 -:100B400067000E00130000006B300000832744FE96 -:100B5000938717002322F4FE832744FE0327C4FE55 -:100B6000E3ECE7EC130000008320C10503248105BA -:100B70001301010667800000130101FC232E1102FE -:100B8000232C810213040104232EA4FC232CB4FC87 -:100B9000232AC4FC2328D4FC2326E4FCB737008195 -:100BA0000327C4FD23ACE79AB73700819387879B5F -:100BB000032784FD23A2E700B73700819387879B33 -:100BC000032744FD23A4E700B73700819387879B61 -:100BD0000327C4FC23A6E700B73700819387879BD0 -:100BE000032704FD23A8E700EFF04FDC2324A4FE35 -:100BF0000327C4FC832784FEB357F7022326F4FEA1 -:100C00000327C4FC832784FEB377F70263880700B9 -:100C10008327C4FE938717002326F4FEB73700818D -:100C20009387879B0327C4FE23AAE7000327C4FCFE -:100C3000832784FE6362F702B73700819386879B20 -:100C4000B7170080138607CB832584FE032504FD98 -:100C5000EFF0CFFB6F000002B73700819386879BD0 -:100C6000B7170080138607CB8325C4FC032504FD3A -:100C7000EFF0CFF9EFF00FD32322A4FE032704FDFA -:100C8000832744FE63F8E700032544FEEFF0DF8688 -:100C90006F00C000032504FDEFF01F861300000065 -:100CA0008320C10303248103130101046780000032 -:100CB000130101FB232611042324810413040105DD -:100CC000232EA4FA232CB4FAEFF0DF8F2320A4FE06 -:100CD000832704FE83A70700232EF4FC832704FE4A -:100CE00083A74700232CF4FC832704FE83A78700F7 -:100CF000232AF4FC832704FE83A747012326F4FE5E -:100D00000327C4FE8327C4FBB307F7022324F4FEA2 -:100D10008327C4FE639A0700930710002326F4FE7E -:100D20008327C4FB2324F4FE832704FE83A7C70084 -:100D30002328F4FC232204FE6F00000C032784FB0D -:100D4000832704FD3307F702832784FEB307F700E8 -:100D50002326F4FC032784FE832704FDB337F70022 -:100D600093F7F70F2324F4FC832784FC93B7170031 -:100D7000A303F4FC834774FC138F0700B7170080AC -:100D8000938F47DE6B200F007B70FF018327C4FC2D -:100D9000939727000327C4FDB307F70083A6070036 -:100DA0008327C4FC93972700032784FDB307F7002C -:100DB00003A707008327C4FC93972700032644FD5D -:100DC000B307F6003387E60023A0E700832784FEFD -:100DD000938717002324F4FEB7170080138E87DE55 -:100DE00067000E00130000006B300000832744FEF4 -:100DF000938717002322F4FE832744FE0327C4FEB3 -:100E0000E3EEE7F2130000008320C1040324810411 -:100E10001301010567800000130101FC232E11025C -:100E2000232C810213040104232EA4FC232CB4FCE4 -:100E3000232AC4FC2328D4FC2326E4FCB7370081F2 -:100E40000327C4FD23ACE79AB73700819387879BBC -:100E5000032784FD23A2E700B73700819387879B90 -:100E6000032744FD23A4E700B73700819387879BBE -:100E70000327C4FC23A6E700B73700819387879B2D -:100E8000032704FD23A8E700EFF04FB22324A4FEBC -:100E90000327C4FC832784FEB357F7022326F4FEFE -:100EA0000327C4FC832784FEB377F7026388070017 -:100EB0008327C4FE938717002326F4FEB7370081EB -:100EC0009387879B0327C4FE23AAE7000327C4FC5C -:100ED000832784FE6362F702B73700819386879B7E -:100EE000B7170080138607F5832584FE032504FDCC -:100EF000EFF0CFD16F000002B73700819386879B58 -:100F0000B7170080138607F58325C4FC032504FD6D -:100F1000EFF0CFCFEFF00FA92322A4FE032704FDAB -:100F2000832744FE63F8E700032544FEEFF0CFDC9F -:100F30006F00C000032504FDEFF00FDC130000007C -:100F40008320C1030324810313010104678000008F -:100F5000130101FB2326110423248104130401053A -:100F6000232EA4FA232CB4FAEFF0CFE52320A4FE1D -:100F7000832704FE83A70700232EF4FC832704FEA7 -:100F800083A74700232CF4FC832704FE83A7870054 -:100F9000232AF4FC832704FE83A747012326F4FEBB -:100FA0000327C4FE8327C4FBB307F7022324F4FE00 -:100FB0008327C4FE639A0700930710002326F4FEDC -:100FC0008327C4FB2324F4FE832704FE83A7C700E2 -:100FD0002328F4FC232204FE6F00000C032784FB6B -:100FE000832704FD3307F702832784FEB307F70046 -:100FF0002326F4FC032784FE832704FDB337F70080 -:1010000093F7F70F2324F4FC832784FC93B717008E -:10101000A303F4FC834774FC138F0700B717008009 -:10102000938F47086B200F007B70FF018327C4FC60 -:10103000939727000327C4FDB307F70083A6070093 -:101040008327C4FC93972700032784FDB307F70089 -:1010500003A707008327C4FC93972700032644FDBA -:10106000B307F6003387E64023A0E700832784FE1A -:10107000938717002324F4FEB7170080138E870888 -:1010800067000E00130000006B300000832744FE51 -:10109000938717002322F4FE832744FE0327C4FE10 -:1010A000E3EEE7F2130000008320C104032481046F -:1010B0001301010567800000130101FC232E1102BA -:1010C000232C810213040104232EA4FC232CB4FC42 -:1010D000232AC4FC2328D4FC2326E4FCB737008150 -:1010E0000327C4FD23A8E79CB73700819387079D9A -:1010F000032784FD23A2E700B73700819387079D6C -:10110000032744FD23A4E700B73700819387079D99 -:101110000327C4FC23A6E700B73700819387079D08 -:10112000032704FD23A8E700EFF04F882324A4FE43 -:101130000327C4FC832784FEB357F7022326F4FE5B -:101140000327C4FC832784FEB377F7026388070074 -:101150008327C4FE938717002326F4FEB737008148 -:101160009387079D0327C4FE23AAE7000327C4FC37 -:10117000832784FE6362F702B73700819386079D59 -:10118000B71700801386071F832584FE032504FDFF -:10119000EFF0CFA76F000002B73700819386079D5D -:1011A000B71700801386071F8325C4FC032504FDA1 -:1011B000EFF0CFA5EFE01FFF2322A4FE032704FDDD -:1011C000832744FE63F8E700032544FEEFF0CFB227 -:1011D0006F00C000032504FDEFF00FB21300000004 -:1011E0008320C103032481031301010467800000ED -:1011F000130101FB23261104232481041304010598 -:10120000232EA4FA232CB4FAEFF0CFBB2320A4FEA4 -:10121000832704FE83A70700232EF4FC832704FE04 -:1012200083A7470083A70700232CF4FC832704FE31 -:1012300083A78700232AF4FC832704FE83A74701A2 -:101240002326F4FE0327C4FE8327C4FBB307F7025B -:101250002324F4FE8327C4FE639A0700930710003B -:101260002326F4FE8327C4FB2324F4FE832704FEF5 -:1012700083A7C7002328F4FC232204FE6F00000B81 -:10128000032784FB832704FD3307F702832784FEAB -:10129000B307F7002326F4FC032784FE832704FD0D -:1012A000B337F70093F7F70F2324F4FC832784FC6C -:1012B00093B71700A303F4FC834774FC138F070054 -:1012C000B7170080938F87316B200F007B70FF0171 -:1012D0008327C4FC939727000327C4FDB307F700B7 -:1012E00083A607008327C4FC93972700032744FDA8 -:1012F000B307F700032784FD3387E60023A0E70048 -:10130000832784FE938717002324F4FEB7170080F9 -:10131000138EC73167000E00130000006B30000011 -:10132000832744FE938717002322F4FE832744FE7D -:101330000327C4FEE3E6E7F4130000008320C104A2 -:10134000032481041301010567800000130101FCDF -:10135000232E1102232C810213040104232EA4FC4A -:10136000232CB4FC232AC4FC2328D4FC2326E4FC2D -:10137000B73700810327C4FD23A8E79CB737008156 -:101380009387079D032784FD23A2E700B7370081D9 -:101390009387079D032744FD23A4E700B737008107 -:1013A0009387079D0327C4FC23A6E700B737008176 -:1013B0009387079D032704FD23A8E700EFE01FDFC5 -:1013C0002324A4FE0327C4FC832784FEB357F7021B -:1013D0002326F4FE0327C4FC832784FEB377F70299 -:1013E000638807008327C4FE938717002326F4FE33 -:1013F000B73700819387079D0327C4FE23AAE70020 -:101400000327C4FC832784FE6362F702B737008199 -:101410009386079DB717008013864748832584FE6F -:10142000032504FDEFE09FFE6F000002B737008147 -:101430009386079DB7170080138647488325C4FC11 -:10144000032504FDEFE09FFCEFE0DFD52322A4FE9F -:10145000032704FD832744FE63F8E700032544FEC9 -:10146000EFF08F896F00C000032504FDEFF0CF88F7 -:10147000130000008320C10303248103130101042E -:1014800067800000130101FB23261104232481043B -:1014900013040105232EA4FA232CB4FAEFF08F9243 -:1014A0002320A4FE832704FE83A70700232EF4FC39 -:1014B000832704FE83A7470083A70700232CF4FC9F -:1014C000832704FE83A78700232AF4FC832704FED6 -:1014D00083A747012326F4FE0327C4FE8327C4FB0A -:1014E000B307F7022324F4FE8327C4FE639A0700A0 -:1014F000930710002326F4FE8327C4FB2324F4FE65 -:10150000832704FE83A7C7002328F4FC232204FEBC -:101510006F00000B032784FB832704FD3307F702CA -:10152000832784FEB307F7002326F4FC032784FEF9 -:10153000832704FDB337F70093F7F70F2324F4FC58 -:10154000832784FC93B71700A303F4FC834774FC40 -:10155000138F0700B7170080938FC75A6B200F00B7 -:101560007B70FF018327C4FC939727000327C4FDEA -:10157000B307F70083A607008327C4FC93972700CF -:10158000032744FDB307F700032784FD3387E602F2 -:1015900023A0E700832784FE938717002324F4FE0B -:1015A000B7170080138E075B67000E001300000062 -:1015B0006B300000832744FE938717002322F4FE3C -:1015C000832744FE0327C4FEE3E6E7F4130000008C -:1015D0008320C104032481041301010567800000F6 -:1015E000130101FE232E810013040102232604FEB1 -:1015F0006F008004B73700810327C4FE131727004C -:101600009387879EB307F7001307300023A0E700F6 -:10161000B74700810327C4FE131727009387879ECF -:10162000B307F7001307200023A0E7008327C4FEB9 -:10163000938717002326F4FE0327C4FE9307F00FB9 -:10164000E3DAE7FA130000000324C10113010102E9 -:1016500067800000130101FD23261102232481026B -:1016600013040103232EA4FCB7070081138507117F -:10167000EFF00F8C232604FE6F0080058327C4FE45 -:10168000638E07008327C4FE93F7F7006398070073 -:10169000B707008113854713EFF08F898327C4FEB6 -:1016A000939727000327C4FDB307F70083A707001C -:1016B00013850700EFF08F8BB70700811385871321 -:1016C000EFF00F878327C4FE938717002326F4FECD -:1016D0000327C4FE9307F00FE3D2E7FAB7070081B0 -:1016E0001385C713EFF0CF84130000008320C102DD -:1016F000032481021301010367800000130101FE2E -:10170000232E1100232C810013040102EFF05FED62 -:1017100093060001B75700811386879EB747008163 -:101720009385879EB73700811385879EEFF0CF940E -:10173000B707008113850716EFE09FFFB7570081B9 -:101740001385879EEFF01FF1130700019306000138 -:10175000B75700811386879EB74700819385879E80 -:10176000B73700811385879EEFF00FC1B70700815F -:101770001385C717EFE0DFFBB75700811385879EFE -:10178000EFF05FED1307000193060001B7570081EA -:101790001386879EB74700819385879EB737008160 -:1017A0001385879EEFF04FE7B70700811385071970 -:1017B000EFE01FF8B75700811385879EEFF09FE990 -:1017C000930730002326F4FE9305C4FE130700019F -:1017D00093060001B75700811386879EB757008193 -:1017E0001385879EEFF05F8DB70700811385871AF9 -:1017F000EFE01FF4B75700811385879EEFF09FE558 -:101800009305C4FE1307000193060001B75700813A -:101810001386879EB75700811385879EEFF01FB30D -:10182000B70700811385871AEFE09FF0B757008153 -:101830001385879EEFF01FE29307000013850700D2 -:101840008320C1010324810113010102678000008C -:02000004810079 -:10000000300000003100000032000000330000002A -:10001000340000003500000036000000370000000A -:10002000380000003900000061000000620000009C -:10003000630000006400000065000000660000002E -:1000400030000000310000003200000033000000EA -:1000500034000000350000003600000037000000CA -:10006000380000003900000061000000620000005C -:1000700063000000640000006500000066000000EE -:100080000A000000300000003100000032000000D3 -:10009000330000003400000035000000360000008E -:1000A0003700000038000000390000006100000047 -:1000B00062000000630000006400000065000000B2 -:1000C000660000004F66667365743A200000000009 -:1000D000300000003100000032000000330000005A -:1000E000340000003500000036000000370000003A -:1000F00038000000390000006100000062000000CC -:10010000630000006400000065000000660000005D -:100110002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0F -:100120002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0A22 -:10013000000000000A000000200000000A2D2D2D04 -:100140002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DDF -:100150002D2D2D2D2D2D2D2D2D2D2D2D0A00000079 -:100160000A0A4D6174726978206D756C7469706CDF -:1001700069636174696F6E0A000000000A0A4D61CC -:1001800074726978204164646974696F6E0A000052 -:100190000A0A4D61747269782053756274726163E2 -:1001A00074696F6E0A0000000A0A4D617472697802 -:1001B00020456C656D656E74204164646974696F77 -:0301C0006E0A00C4 -:1001C4000000008104000081080000810C0000810F -:1001D4001000008114000081180000811C000081BF -:1001E4002000008124000081280000812C0000816F -:1001F4003000008134000081380000813C0000811F -:100204004000008144000081480000814C000081CE -:100214005000008154000081580000815C0000817E -:100224006000008164000081680000816C0000812E -:100234007000008174000081780000817C000081DE -:1002440084000081880000818C000081900000817E -:1002540094000081980000819C000081A00000812E -:10026400A4000081A8000081AC000081B0000081DE -:10027400B4000081B8000081BC000081C00000818E -:10028400D0000081D4000081D8000081DC0000810E -:10029400E0000081E4000081E8000081EC000081BE -:1002A400F0000081F4000081F8000081FC0000816E -:1002B4000001008104010081080100810C0100811A -:040000058000000077 -:00000001FF diff --git a/emulator/vortex_software/vx_include/.DS_Store b/emulator/vortex_software/vx_include/.DS_Store deleted file mode 100644 index f03454ae..00000000 Binary files a/emulator/vortex_software/vx_include/.DS_Store and /dev/null differ diff --git a/emulator/vortex_software/vx_include/vx_front.c b/emulator/vortex_software/vx_include/vx_front.c deleted file mode 100644 index c64db4c7..00000000 --- a/emulator/vortex_software/vx_include/vx_front.c +++ /dev/null @@ -1,439 +0,0 @@ - -#include "vx_front.h" -#include "../vx_os/vx_back/vx_back.h" - -// -------------------------- Matrix Multiplication -------------------------- - -static mat_mult_arg_t mat_mult_args; - -void _vx_mat_mult(unsigned, unsigned); -void vx_sq_mat_mult(void * x, void * y, void * z, unsigned mat_dim) -{ - mat_mult_args.x = x; - mat_mult_args.y = y; - mat_mult_args.z = z; - mat_mult_args.mat_dim = mat_dim; - - unsigned num_avail_threads = vx_available_threads(); - - unsigned off = (mat_dim/num_avail_threads); - - if ((mat_dim%num_avail_threads) != 0) - { - off += 1; - } - - vx_printf("Offset: ", off); - - - mat_mult_args.offset = off; - - if (mat_dim >= num_avail_threads) - { - vx_spawnWarps(mat_dim, num_avail_threads, _vx_mat_mult, (void *) (&mat_mult_args)); - } - else - { - vx_spawnWarps(mat_dim, mat_dim, _vx_mat_mult, (void *) (&mat_mult_args)); - } - - unsigned num_avail_warps = vx_available_warps(); - - if (mat_dim > num_avail_warps) - { - vx_wait_for_warps(num_avail_warps); - } - else - { - vx_wait_for_warps(mat_dim); - } -} - -void _vx_mat_mult(unsigned tid, unsigned wid) -{ - mat_mult_arg_t * args = (mat_mult_arg_t *) vx_get_arg_struct(); - - unsigned * x_ptr = args->x; - unsigned * y_ptr = args->y; - unsigned * z_ptr = args->z; - - unsigned off = args->offset; - - unsigned i_index = off * tid; - - if (off == 0) - { - off = 1; - i_index = tid; - } - - unsigned mat_dim = args->mat_dim; - - for (int iter = 0; iter < off; ++iter) - { - unsigned total = 0; - for (unsigned place = 0; place < mat_dim; ++place) - { - unsigned x_i = (wid * mat_dim) + place; - unsigned y_i = (mat_dim * place) + i_index; - - total += (x_ptr[x_i] * y_ptr[y_i]); - } - - int final_i = (wid * mat_dim) + i_index; - unsigned cond = i_index < mat_dim; - __if(cond) - { - z_ptr[final_i] = total; - i_index++; - } - __else - __end_if - } - - // for (int z = 0; z < ((1000 * wid) + 1000); z++); - return; -} - - - - -static mat_r_arg_t mat_r_args; -// -------------------------- Matrix Addition -------------------------- -void _vx_mat_add(unsigned, unsigned); -void vx_mat_add(void * x, void * y, void * z, unsigned num_rows, unsigned num_cols) -{ - mat_r_args.x = x; - mat_r_args.y = y; - mat_r_args.z = z; - mat_r_args.num_cols = num_cols; - mat_r_args.num_rows = num_rows; - - - unsigned num_avail_threads = vx_available_threads(); - - unsigned off = (num_cols/num_avail_threads); - - if ((num_cols%num_avail_threads) != 0) - { - off += 1; - } - - - mat_r_args.offset = off; - - if (num_cols >= num_avail_threads) - { - vx_spawnWarps(num_rows, num_avail_threads, _vx_mat_add, (void *) (&mat_r_args)); - } - else - { - vx_spawnWarps(num_rows, num_cols, _vx_mat_add, (void *) (&mat_r_args)); - } - - unsigned num_avail_warps = vx_available_warps(); - - if (num_rows > num_avail_warps) - { - vx_wait_for_warps(num_avail_warps); - } - else - { - vx_wait_for_warps(num_rows); - } -} - -void _vx_mat_add(unsigned tid, unsigned wid) -{ - // vx_print_str("*"); - // for (int z = 0; z < ((wid * 1000) + 1000); z++); - - mat_r_arg_t * args = (mat_r_arg_t *) vx_get_arg_struct(); - - unsigned * x_ptr = args->x; - unsigned * y_ptr = args->y; - unsigned * z_ptr = args->z; - - unsigned off = args->offset; - - unsigned i_index = off * tid; - - if (off == 0) - { - off = 1; - i_index = tid; - } - - unsigned num_cols = args->num_cols; - - for (int iter = 0; iter < off; ++iter) - { - int final_i = (wid * num_cols) + i_index; - unsigned cond = i_index < num_cols; - __if(cond) - { - z_ptr[final_i] = x_ptr[final_i] + y_ptr[final_i]; - i_index++; - } - __else - __end_if - } - return; - -} - - - -// -------------------------- Matrix Subtraction -------------------------- -void _vx_mat_sub(unsigned, unsigned); -void vx_mat_sub(void * x, void * y, void * z, unsigned num_rows, unsigned num_cols) -{ - mat_r_args.x = x; - mat_r_args.y = y; - mat_r_args.z = z; - mat_r_args.num_cols = num_cols; - mat_r_args.num_rows = num_rows; - - unsigned num_avail_threads = vx_available_threads(); - - unsigned off = (num_cols/num_avail_threads); - - if ((num_cols%num_avail_threads) != 0) - { - off += 1; - } - - - mat_r_args.offset = off; - - if (num_cols >= num_avail_threads) - { - vx_spawnWarps(num_rows, num_avail_threads, _vx_mat_sub, (void *) (&mat_r_args)); - } - else - { - vx_spawnWarps(num_rows, num_cols, _vx_mat_sub, (void *) (&mat_r_args)); - } - - unsigned num_avail_warps = vx_available_warps(); - - if (num_rows > num_avail_warps) - { - vx_wait_for_warps(num_avail_warps); - } - else - { - vx_wait_for_warps(num_rows); - } -} - -void _vx_mat_sub(unsigned tid, unsigned wid) -{ - // vx_print_str("*"); - // for (int z = 0; z < ((wid * 1000) + 1000); z++); - - mat_r_arg_t * args = (mat_r_arg_t *) vx_get_arg_struct(); - - unsigned * x_ptr = args->x; - unsigned * y_ptr = args->y; - unsigned * z_ptr = args->z; - - unsigned off = args->offset; - - unsigned i_index = off * tid; - - if (off == 0) - { - off = 1; - i_index = tid; - } - - unsigned num_cols = args->num_cols; - - for (int iter = 0; iter < off; ++iter) - { - int final_i = (wid * num_cols) + i_index; - unsigned cond = i_index < num_cols; - __if(cond) - { - z_ptr[final_i] = x_ptr[final_i] - y_ptr[final_i]; - i_index++; - } - __else - __end_if - } - return; - -} - - - -static mat_e_arg_t mat_e_args; -// -------------------------------------------------------------- - -void _vx_e_mat_add(unsigned, unsigned); -void vx_e_mat_add(void * x, void * scal, void * z, unsigned num_rows, unsigned num_cols) -{ - mat_e_args.x = x; - mat_e_args.scal = scal; - mat_e_args.z = z; - mat_e_args.num_cols = num_cols; - mat_e_args.num_rows = num_rows; - - - unsigned num_avail_threads = vx_available_threads(); - - unsigned off = (num_cols/num_avail_threads); - - if ((num_cols%num_avail_threads) != 0) - { - off += 1; - } - - mat_e_args.offset = off; - - if (num_cols >= num_avail_threads) - { - vx_spawnWarps(num_rows, num_avail_threads, _vx_e_mat_add, (void *) (&mat_e_args)); - } - else - { - vx_spawnWarps(num_rows, num_cols, _vx_e_mat_add, (void *) (&mat_e_args)); - } - - unsigned num_avail_warps = vx_available_warps(); - - if (num_rows > num_avail_warps) - { - vx_wait_for_warps(num_avail_warps); - } - else - { - vx_wait_for_warps(num_rows); - } -} - -void _vx_e_mat_add(unsigned tid, unsigned wid) -{ - // vx_print_str("*"); - // for (int z = 0; z < ((wid * 1000) + 1000); z++); - - mat_e_arg_t * args = (mat_e_arg_t *) vx_get_arg_struct(); - - unsigned * x_ptr = args->x; - unsigned scal = *((unsigned *) args->scal); - - unsigned * z_ptr = args->z; - - unsigned off = args->offset; - - unsigned i_index = off * tid; - - if (off == 0) - { - off = 1; - i_index = tid; - } - - unsigned num_cols = args->num_cols; - - for (int iter = 0; iter < off; ++iter) - { - int final_i = (wid * num_cols) + i_index; - unsigned cond = i_index < num_cols; - __if(cond) - { - z_ptr[final_i] = x_ptr[final_i] + scal; - i_index++; - } - __else - __end_if - } - return; - -} - -void _vx_e_mat_mult(unsigned, unsigned); -void vx_e_mat_mult(void * x, void * scal, void * z, unsigned num_rows, unsigned num_cols) -{ - mat_e_args.x = x; - mat_e_args.scal = scal; - mat_e_args.z = z; - mat_e_args.num_cols = num_cols; - mat_e_args.num_rows = num_rows; - - - unsigned num_avail_threads = vx_available_threads(); - - unsigned off = (num_cols/num_avail_threads); - - if ((num_cols%num_avail_threads) != 0) - { - off += 1; - } - - mat_e_args.offset = off; - - if (num_cols >= num_avail_threads) - { - vx_spawnWarps(num_rows, num_avail_threads, _vx_e_mat_mult, (void *) (&mat_e_args)); - } - else - { - vx_spawnWarps(num_rows, num_cols, _vx_e_mat_mult, (void *) (&mat_e_args)); - } - - unsigned num_avail_warps = vx_available_warps(); - - if (num_rows > num_avail_warps) - { - vx_wait_for_warps(num_avail_warps); - } - else - { - vx_wait_for_warps(num_rows); - } -} - -void _vx_e_mat_mult(unsigned tid, unsigned wid) -{ - // vx_print_str("*"); - // for (int z = 0; z < ((wid * 1000) + 1000); z++); - - mat_e_arg_t * args = (mat_e_arg_t *) vx_get_arg_struct(); - - unsigned * x_ptr = args->x; - unsigned scal = *((unsigned *) args->scal); - - unsigned * z_ptr = args->z; - - unsigned off = args->offset; - - unsigned i_index = off * tid; - - if (off == 0) - { - off = 1; - i_index = tid; - } - - unsigned num_cols = args->num_cols; - - for (int iter = 0; iter < off; ++iter) - { - int final_i = (wid * num_cols) + i_index; - unsigned cond = i_index < num_cols; - __if(cond) - { - z_ptr[final_i] = x_ptr[final_i] * scal; - i_index++; - } - __else - __end_if - } - return; - -} - - - diff --git a/emulator/vortex_software/vx_include/vx_front.h b/emulator/vortex_software/vx_include/vx_front.h deleted file mode 100644 index b78b8284..00000000 --- a/emulator/vortex_software/vx_include/vx_front.h +++ /dev/null @@ -1,55 +0,0 @@ -#include "../vx_os/vx_back/vx_back.h" -#include "../vx_os/vx_io/vx_io.h" - - -// -------------------------- Matrix Multiplication -------------------------- - -typedef struct -{ - void * x; - void * y; - void * z; - unsigned mat_dim; - unsigned offset; - -} mat_mult_arg_t; -void vx_sq_mat_mult(void *, void *, void *, unsigned); - - -// -------------------------------------------------------------------------- - -typedef struct -{ - void * x; - void * y; - void * z; - unsigned num_cols; - unsigned num_rows; - unsigned offset; - -} mat_r_arg_t; -// -------------------------- Matrix Addition ----------------------------- -void vx_mat_add(void *, void *, void *, unsigned, unsigned); - -// -------------------------- Matrix Subtraction -------------------------- -void vx_mat_sub(void *, void *, void *, unsigned, unsigned); - - - -// ----------------------------------------------------------------------- -typedef struct -{ - void * x; - void * scal; - void * z; - unsigned num_cols; - unsigned num_rows; - unsigned offset; - -} mat_e_arg_t; - -// -------------------------- Matrix element Addition ------------------ -void vx_e_mat_add(void *, void *, void *, unsigned, unsigned); - -// -------------------------- Matrix element Addition ------------------ -void vx_e_mat_mult(void *, void *, void *, unsigned, unsigned); \ No newline at end of file diff --git a/emulator/vortex_software/vx_main.c b/emulator/vortex_software/vx_main.c deleted file mode 100644 index 0d70faad..00000000 --- a/emulator/vortex_software/vx_main.c +++ /dev/null @@ -1,70 +0,0 @@ - -#include "./vx_include/vx_front.h" - -unsigned x[1024] = {0}; -unsigned y[1024] = {0}; -unsigned z[1024] = {0}; - -#define MAT_DIM 16 - -#define NUM_COLS 16 -#define NUM_ROWS 16 - -void initialize_mats() -{ - for (int i = 0; i < (MAT_DIM * MAT_DIM); i++) - { - x[i] = 3; - y[i] = 2; - } -} - -void print_matrix(unsigned * z) -{ - vx_print_str("-------------------------------\n"); - for (int j = 0; j < (MAT_DIM * MAT_DIM); j++) - { - if (j!=0) if ((j % MAT_DIM) == 0) vx_print_str("\n"); - vx_print_hex(z[j]); - vx_print_str(" "); - } - vx_print_str("\n-------------------------------\n"); -} - -int main() -{ - - initialize_mats(); - - // matrix multiplication - vx_sq_mat_mult(x, y, z, MAT_DIM); - vx_print_str("\n\nMatrix multiplication\n"); - print_matrix(z); - - - // matrix addition - vx_mat_add(x, y, z, NUM_ROWS, NUM_COLS); - vx_print_str("\n\nMatrix Addition\n"); - print_matrix(z); - - - // matrix sub - vx_mat_sub(x, y, z, NUM_ROWS, NUM_COLS); - vx_print_str("\n\nMatrix Subtraction\n"); - print_matrix(z); - - unsigned scal = 3; - - // matrix element add - vx_e_mat_add(z, &scal, z, NUM_ROWS, NUM_COLS); - vx_print_str("\n\nMatrix Element Addition\n"); - print_matrix(z); - - // matrix element add - vx_e_mat_mult(z, &scal, z, NUM_ROWS, NUM_COLS); - vx_print_str("\n\nMatrix Element Addition\n"); - print_matrix(z); - - - return 0; -} \ No newline at end of file diff --git a/emulator/vortex_software/vx_os/.DS_Store b/emulator/vortex_software/vx_os/.DS_Store deleted file mode 100644 index b0526ab1..00000000 Binary files a/emulator/vortex_software/vx_os/.DS_Store and /dev/null differ diff --git a/emulator/vortex_software/vx_os/vx_back/vx_back.c b/emulator/vortex_software/vx_os/vx_back/vx_back.c deleted file mode 100644 index 9f3d7cee..00000000 --- a/emulator/vortex_software/vx_os/vx_back/vx_back.c +++ /dev/null @@ -1,150 +0,0 @@ - -#include "vx_back.h" -#include "../vx_io/vx_io.h" - - -void vx_before_main() -{ - // unsigned num_available_warps = vx_available_warps(); - for (int i = 0; i < 8; i++) - { - queue_initialize(q + i); - } -} - -void vx_reschedule_warps() -{ - - - register unsigned curr_warp asm("s10"); - // vx_printf("Reschedule: ", curr_warp); - - if (queue_isEmpty(q+curr_warp)) - { - // vx_printf("Done: ", curr_warp); - done[curr_warp] = 1; - if (curr_warp == 0) - { - vx_load_context(); - return; - } - ECALL; - } - - Job j; - queue_dequeue(q+curr_warp,&j); - - // vx_printf("Reschedule -> ", j.wid); - asm __volatile__("mv sp,%0"::"r" (j.base_sp):); - vx_createThreads(j.n_threads, j.wid, j.func_ptr, j.args, j.assigned_warp); - - ECALL; - -} - -void vx_schedule_warps() -{ - - unsigned num_available_warps = vx_available_warps(); - - asm __volatile__("mv s3, sp"); - - for (int curr_warp = 1; curr_warp < num_available_warps; ++curr_warp) - { - if (!queue_isEmpty(q+curr_warp)) - { - Job j; - queue_dequeue(q+curr_warp,&j); - asm __volatile__("mv sp,%0"::"r" (j.base_sp):); - vx_wspawn(j.n_threads, j.wid, j.func_ptr, j.args, j.assigned_warp); - } - } - - asm __volatile__("mv sp, s3"); - - - vx_save_context(); - - // vx_print_str("saved context\n"); - - register unsigned val asm("tp"); - if (val) - { - if (!queue_isEmpty(q)) - { - // vx_print_str("found something for w0\n"); - Job j; - queue_dequeue(q,&j); - // vx_printf("num_threads: ", j.n_threads); - asm __volatile__("mv sp,%0"::"r" (j.base_sp):); - vx_createThreads(j.n_threads, j.wid, j.func_ptr, j.args, j.assigned_warp); - } - } - -} - - -void vx_spawnWarps(unsigned num_Warps, unsigned num_threads, FUNC, void * args) -{ - vx_before_main(); - - unsigned num_available_warps = vx_available_warps(); - // vx_printf("Num available warps: ", num_available_warps); - - asm __volatile__("addi s2, sp, 0"); - int warp = 0; - for (unsigned i = 0; i < num_Warps; i++) - { - asm __volatile__("lui s3, 0xFFFF0"); - asm __volatile__("add sp, sp, s3"); - register unsigned stack_ptr asm("sp"); - - Job j; - j.wid = i; - j.n_threads = num_threads; - j.base_sp = stack_ptr; - j.func_ptr = (unsigned) func; - j.args = args; - j.assigned_warp = warp; - - queue_enqueue(q + warp,&j); - ++warp; - if (warp >= num_available_warps) warp = 0; - } - asm __volatile__("addi sp, s2, 0"); - - - vx_schedule_warps(); - -} - -void vx_wait_for_warps(unsigned num_wait) -{ - // vx_printf("wait for: ", num_wait); - unsigned num_available_warps = vx_available_warps(); - unsigned num = 0; - while (num != num_wait) - { - num = 0; - for (int i = 0; i < num_available_warps; i++) - { - if (done[i] == 1) - { - num += 1; - } - } - } - - // vx_printf("num found: ", num); - for (int i = 0; i < num_available_warps; i++) done[i] = 0; -} - - -void * vx_get_arg_struct(void) -{ - register void *ret asm("s7"); - return ret; -} - - - diff --git a/emulator/vortex_software/vx_os/vx_back/vx_back.h b/emulator/vortex_software/vx_os/vx_back/vx_back.h deleted file mode 100644 index c31b1dea..00000000 --- a/emulator/vortex_software/vx_os/vx_back/vx_back.h +++ /dev/null @@ -1,55 +0,0 @@ - - -#pragma once - -#include -#include "../vx_util/queue.h" - -#define WSPAWN asm __volatile__(".word 0x3006b"::); -#define CLONE asm __volatile__(".word 0x3506b":::); -#define JALRS asm __volatile__(".word 0x1bfe0eb":::"s10"); -#define ECALL asm __volatile__(".word 0x00000073"); -#define JMPRT asm __volatile__(".word 0x5406b"); -#define SPLIT asm __volatile__(".word 0xf206b"); -#define P_JUMP asm __volatile__(".word 0x1ff707b"); -#define JOIN asm __volatile__(".word 0x306b"); - - -#define __if(val) bool temp = !val; \ - register unsigned p asm("t5") = temp; \ - register void * e asm("t6") = &&ELSE; \ - SPLIT; \ - P_JUMP; \ - - -#define __else register void * w asm("t3") = &&AFTER; \ - asm __volatile__("jr t3"); \ - ELSE: asm __volatile__("nop"); - -#define __end_if AFTER:\ - JOIN; - -static int done[] = {0, 0, 0, 0, 0, 0, 0}; - -static int main_sp[1]; - -unsigned context[32]; -void vx_save_context(void); -void vx_load_context(void); - - -#define FUNC void (func)(unsigned, unsigned) - -unsigned vx_available_warps(void); -unsigned vx_available_threads(void); - - -void vx_createThreads(unsigned, unsigned, unsigned, void *, unsigned); -void vx_wspawn(unsigned, unsigned, unsigned, void *, unsigned); -void vx_spawnWarps(unsigned num_Warps, unsigned num_threads, FUNC, void *); -void vx_schedule_warps(void); -void vx_reschedule_warps(void); -void vx_wait_for_warps(unsigned); -void * vx_get_arg_struct(void); - - diff --git a/emulator/vortex_software/vx_os/vx_back/vx_back.s b/emulator/vortex_software/vx_os/vx_back/vx_back.s deleted file mode 100644 index 72c917cf..00000000 --- a/emulator/vortex_software/vx_os/vx_back/vx_back.s +++ /dev/null @@ -1,151 +0,0 @@ - - - -.section .text - -.type _start, @function -.global _start -_start: - li a0, 2 # Num Warps - csrw 0x20, a0 # Setting the number of available warps - li a0, 1 # Num Threads - csrw 0x21, a0 # Setting the number of available threads - csrw mhartid,zero - csrw misa,zero - lui sp, 0x7ffff - jal vx_before_main - jal main - ecall - -.type vx_createThreads, @function -.global vx_createThreads -vx_createThreads: - mv s7 ,a3 # Moving args to s7 - mv s10,a4 # Moving assigned_warp to s10 - mv t5 ,sp # Saving the current stack pointer to t5 - mv t2 , a0 # t2 = num_threads -loop_init: - li a0,1 # i = 0 -loop_cond: - bge a0, t2, loop_done # i < num_threads -loop_body: - addi sp,sp,-2048 # Allocate 2k stack for new thread - mv t1, a0 # #lane = i - .word 0x3506b # clone register state -loop_inc: - addi a0, a0, 1 - j loop_cond -loop_done: - mv sp,t5 # Restoring the stack - li a0,0 # setting tid = 0 for main thread - mv t6,a2 # setting func_addr - mv s11,t2 # setting num_threads to spawn - .word 0x1bfe0eb - la a0, vx_reschedule_warps - .word 0x5406b - - -.type vx_wspawn, @function -.global vx_wspawn -vx_wspawn: - la t1, vx_createThreads - .word 0x3006b # WSPAWN instruction - ret - -.global context - -.type vx_save_context, @function -.global vx_save_context -vx_save_context: -la tp, context -sw x0 , 0 (tp) -sw x1 , 4 (tp) -sw x2 , 8 (tp) -sw x3 , 12(tp) -sw x4 , 16(tp) -sw x5 , 20(tp) -sw x6 , 24(tp) -sw x7 , 28(tp) -sw x8 , 32(tp) -sw x9 , 36(tp) -sw x10, 40(tp) -sw x11, 44(tp) -sw x12, 48(tp) -sw x13, 52(tp) -sw x14, 56(tp) -sw x15, 60(tp) -sw x16, 64(tp) -sw x17, 68(tp) -sw x18, 72(tp) -sw x19, 76(tp) -sw x20, 80(tp) -sw x21, 84(tp) -sw x22, 88(tp) -sw x23, 92(tp) -sw x24, 96(tp) -sw x25, 100(tp) -sw x26, 104(tp) -sw x27, 108(tp) -sw x28, 112(tp) -sw x29, 116(tp) -sw x30, 120(tp) -sw x31, 124(tp) -li tp, 1 -ret - - -.type vx_load_context, @function -.global vx_load_context -vx_load_context: -la tp, context -lw x0 , 0 (tp) -lw x1 , 4 (tp) -lw x2 , 8 (tp) -lw x3 , 12(tp) -lw x4 , 16(tp) -lw x5 , 20(tp) -lw x6 , 24(tp) -lw x7 , 28(tp) -lw x8 , 32(tp) -lw x9 , 36(tp) -lw x10, 40(tp) -lw x11, 44(tp) -lw x12, 48(tp) -lw x13, 52(tp) -lw x14, 56(tp) -lw x15, 60(tp) -lw x16, 64(tp) -lw x17, 68(tp) -lw x18, 72(tp) -lw x19, 76(tp) -lw x20, 80(tp) -lw x21, 84(tp) -lw x22, 88(tp) -lw x23, 92(tp) -lw x24, 96(tp) -lw x25, 100(tp) -lw x26, 104(tp) -lw x27, 108(tp) -lw x28, 112(tp) -lw x29, 116(tp) -lw x30, 120(tp) -lw x31, 124(tp) -li tp, 0 -ret - -.type vx_available_warps, @function -.global vx_available_warps -vx_available_warps: -csrr a0, 0x20 -ret - -.type vx_available_threads, @function -.global vx_available_threads -vx_available_threads: -csrr a0, 0x21 -ret - - - - - diff --git a/emulator/vortex_software/vx_os/vx_io/.DS_Store b/emulator/vortex_software/vx_os/vx_io/.DS_Store deleted file mode 100644 index b23802d5..00000000 Binary files a/emulator/vortex_software/vx_os/vx_io/.DS_Store and /dev/null differ diff --git a/emulator/vortex_software/vx_os/vx_io/vx_io.c b/emulator/vortex_software/vx_os/vx_io/vx_io.c deleted file mode 100644 index e86047b2..00000000 --- a/emulator/vortex_software/vx_os/vx_io/vx_io.c +++ /dev/null @@ -1,29 +0,0 @@ - -#include "vx_io.h" - -void vx_print_hex(unsigned f) -{ - if (f < 16) - { - vx_print_str(hextoa[f]); - return; - } - int temp; - int sf = 32; - bool start = false; - do - { - temp = (f >> (sf - 4)) & 0xf; - if (temp != 0) start = true; - if (start) vx_print_str(hextoa[temp]); - sf -= 4; - } while(sf > 0); -} - - -void vx_printf(char * c, unsigned f) -{ - vx_print_str(c); - vx_print_hex(f); - vx_print_str("\n"); -} \ No newline at end of file diff --git a/emulator/vortex_software/vx_os/vx_util/queue.h b/emulator/vortex_software/vx_os/vx_util/queue.h deleted file mode 100644 index 6793d467..00000000 --- a/emulator/vortex_software/vx_os/vx_util/queue.h +++ /dev/null @@ -1,49 +0,0 @@ - -#ifndef __QUEUE__ - -#define __QUEUE__ - - - -#define SIZE 50 -#define WARPS 7 - - -typedef struct Job_t -{ - unsigned wid; - unsigned n_threads; - unsigned base_sp; - unsigned func_ptr; - void * args; - unsigned assigned_warp; - -} Job; - -typedef struct Queue_t -{ - unsigned start_i; - unsigned end_i; - unsigned num_j; - unsigned total_warps; - unsigned active_warps; - struct Job_t jobs[SIZE]; - -} Queue; - -Queue q[8]; - -void queue_initialize(Queue *); - -void queue_enqueue(Queue *, Job *); - -void queue_dequeue(Queue *, Job *); - -int queue_isFull(Queue *); -int queue_isEmpty(Queue *); -int queue_availableWarps(Queue *); - - -void func(); - -#endif \ No newline at end of file diff --git a/emulator/vortex_software/vx_os/vx_util/queue.s b/emulator/vortex_software/vx_os/vx_util/queue.s deleted file mode 100644 index 6fcec494..00000000 --- a/emulator/vortex_software/vx_os/vx_util/queue.s +++ /dev/null @@ -1,123 +0,0 @@ - -.equ A_WARPS, 7 -.equ SIZE, 50 - -.section .text - -.type queue_initialize, @function -.global queue_initialize -queue_initialize: - mv t0, a0 # loading base address of q - li t1, 0 # to initialize variables - li t2, A_WARPS # Num of available warps - sw t1, 0 (t0) # start_i - sw t1, 4 (t0) # end_i - sw t1, 8 (t0) # num_j - sw t2, 12(t0) # total_warps - sw t1, 16(t0) # active_warps - ret - - - - -.type queue_enqueue, @function -.global queue_enqueue -queue_enqueue: - mv t0, a0 # loding base address of q - lw t1, 8 (t0) # t1 = num_j - addi t1, t1, 1 # ++t1 - sw t1, 8 (t0) # num_j = t1 - addi t1, t0, 20 # t1 = jobs_addr - lw t4, 4 (t0) # t4 = end_i - slli t2, t4, 5 # index * 32 [log(sizeof(job))] - add t1, t1, t2 # jobs + index - lw t3, 0 (a1) # wid - sw t3, 0 (t1) # - lw t3, 4 (a1) # n_threads - sw t3, 4 (t1) # - lw t3, 8 (a1) # base_sp - sw t3, 8 (t1) # - lw t3, 12(a1) # func_ptr - sw t3, 12(t1) # - lw t3, 16(a1) # args - sw t3, 16(t1) # - lw t3, 20(a1) # assigned_warp - sw t3, 20(t1) # - addi t4, t4, 1 # end_i++ - li t5, SIZE # size - bne t4, t5, ec # if ((q.end_i + 1) == SIZE) - mv t4, zero -ec: - sw t4, 4 (t0) # end_i - ret - - -.type queue_dequeue, @function -.global queue_dequeue - -queue_dequeue: - mv t0, a0 # loading base address of q - lw t1, 8 (t0) # t1 = num_j - addi t1, t1, -1 # --t1 - sw t1, 8 (t0) # num_j = t1 - addi t1, t0, 20 # t1 = jobs_addr - lw t4, 0 (t0) # t4 = start_i - li t6, SIZE # size - mv t5, t4 # t5 = start_i - addi t5, t5, 1 # t5++ - bne t5, t6, dc # if ((q.start_i + 1) == SIZE) - mv t5, zero -dc: - sw t5, 0(t0) # storing start_i - slli t2, t4, 5 # index * 32 [log(sizeof(job))] - add t1, t1, t2 # jobs + index - lw t3, 0 (t1) # wid - sw t3, 0 (a1) # - lw t3, 4 (t1) # n_threads - sw t3, 4 (a1) # - lw t3, 8 (t1) # base_sp - sw t3, 8 (a1) # - lw t3, 12(t1) # func_ptr - sw t3, 12(a1) # - lw t3, 16(t1) # args - sw t3, 16(a1) # - lw t3, 20(t1) # assigned_warp - sw t3, 20(a1) # - ret - - -.type queue_isFull, @function -.global queue_isFull -queue_isFull: - mv t0, a0 # loading base address of q - lw t1, 8 (t0) # t1 = num_j - mv a0, zero # ret_val = 0 - li t3, SIZE # t3 = SIZE - bne t3, t1, qf # if (num_j == 1) - addi a0, a0, 1 # ret_val = 1; -qf: - ret - - - -.type queue_isEmpty, @function -.global queue_isEmpty -queue_isEmpty: - mv t0, a0 # loading base address of q - lw t1, 8 (t0) # t1 = num_j - mv a0, zero # ret_val = 0 - mv t3, zero # t3 = 0 - bne t3, t1, qe # if (num_j == 0) - addi a0, a0, 1 # ret_val = 1; -qe: - ret - - -.type queue_availableWarps, @function -.global queue_availableWarps -queue_availableWarps: - mv t0, a0 # loading base address of q - lw t1, 12(t0) # t1 = total_warps - lw t2, 16(t0) # t2 = active_warps - sltu a0, t2, t1 - ret diff --git a/kernel/vx_os/vx_io/vx_io.c b/kernel/vx_os/vx_io/vx_io.c index 32656c23..5cb102fa 100644 --- a/kernel/vx_os/vx_io/vx_io.c +++ b/kernel/vx_os/vx_io/vx_io.c @@ -4,21 +4,6 @@ void vx_print_hex(unsigned f) { vx_print_str(hextoa[f]); - // if (f < 16) - // { - // vx_print_str(hextoa[f]); - // return; - // } - // int temp; - // int sf = 32; - // bool start = false; - // do - // { - // temp = (f >> (sf - 4)) & 0xf; - // if (temp != 0) start = true; - // if (start) vx_print_str(hextoa[temp]); - // sf -= 4; - // } while(sf > 0); } diff --git a/rtl/VX_dmem_controller.v b/rtl/VX_dmem_controller.v index 49bf941c..07fe3e1b 100644 --- a/rtl/VX_dmem_controller.v +++ b/rtl/VX_dmem_controller.v @@ -57,7 +57,7 @@ module VX_dmem_controller ( `ifdef SYN .CACHE_WAYS(1), `else - .CACHE_WAYS(4), + .CACHE_WAYS(2), `endif .CACHE_BLOCK(128), // Bytes .CACHE_BANKS(8), diff --git a/rtl/icarus/Makefile b/rtl/icarus/Makefile deleted file mode 100644 index 1c827f37..00000000 --- a/rtl/icarus/Makefile +++ /dev/null @@ -1,126 +0,0 @@ -############################################################################### -# -# ICARUS VERILOG & GTKWAVE MAKEFILE -# MADE BY WILLIAM GIBB FOR HACDC -# williamgibb@gmail.com -# -# USE THE FOLLOWING COMMANDS WITH THIS MAKEFILE -# "make check" - compiles your verilog design - good for checking code -# "make simulate" - compiles your design+TB & simulates your design -# "make display" - compiles, simulates and displays waveforms -# -############################################################################### -# -# CHANGE THESE THREE LINES FOR YOUR DESIGN -# -#TOOL INPUT -SRC = \ - vortex_tb.v \ -../VX_define.v \ -../interfaces/VX_branch_response_inter.v \ -../interfaces/VX_csr_req_inter.v \ -../interfaces/VX_csr_wb_inter.v \ -../interfaces/VX_dcache_request_inter.v \ -../interfaces/VX_dcache_response_inter.v \ -../interfaces/VX_dram_req_rsp_inter.v \ -../interfaces/VX_exec_unit_req_inter.v \ -../interfaces/VX_frE_to_bckE_req_inter.v \ -../interfaces/VX_gpr_clone_inter.v \ -../interfaces/VX_gpr_data_inter.v \ -../interfaces/VX_gpr_jal_inter.v \ -../interfaces/VX_gpr_read_inter.v \ -../interfaces/VX_gpr_wspawn_inter.v \ -../interfaces/VX_gpu_inst_req_inter.v \ -../interfaces/VX_icache_request_inter.v \ -../interfaces/VX_icache_response_inter.v \ -../interfaces/VX_inst_exec_wb_inter.v \ -../interfaces/VX_inst_mem_wb_inter.v \ -../interfaces/VX_inst_meta_inter.v \ -../interfaces/VX_jal_response_inter.v \ -../interfaces/VX_join_inter.v \ -../interfaces/VX_lsu_req_inter.v \ -../interfaces/VX_mem_req_inter.v \ -../interfaces/VX_mw_wb_inter.v \ -../interfaces/VX_warp_ctl_inter.v \ -../interfaces/VX_wb_inter.v \ -../interfaces/VX_wstall_inter.v \ -../VX_alu.v \ -../VX_back_end.v \ -../VX_csr_handler.v \ -../VX_csr_wrapper.v \ -../VX_decode.v \ -../VX_dmem_controller.v \ -../VX_execute_unit.v \ -../VX_fetch.v \ -../VX_front_end.v \ -../VX_generic_priority_encoder.v \ -../VX_generic_register.v \ -../VX_generic_stack.v \ -../VX_gpgpu_inst.v \ -../VX_gpr.v \ -../VX_gpr_stage.v \ -../VX_gpr_wrapper.v \ -../VX_inst_multiplex.v \ -../VX_lsu.v \ -../VX_lsu_addr_gen.v \ -../VX_one_counter.v \ -../VX_priority_encoder.v \ -../VX_priority_encoder_w_mask.v \ -../VX_rename.v \ -../VX_scheduler.v \ -../VX_warp.v \ -../VX_warp_scheduler.v \ -../VX_writeback.v \ -../Vortex.v \ -../byte_enabled_simple_dual_port_ram.v \ -../cache/VX_Cache_Bank.v \ -../cache/VX_Cache_Block_DM.v \ -../cache/VX_cache_bank_valid.v \ -../cache/VX_cache_data.v \ -../cache/VX_d_cache.v \ -../cache/VX_d_cache_encapsulate.v \ -../cache/VX_d_cache_tb.v \ -../cache/VX_generic_pe.v \ -../cache/bank.v \ -../cache/cache_set.v \ -../pipe_regs/VX_d_e_reg.v \ -../pipe_regs/VX_f_d_reg.v \ -../shared_memory/VX_bank_valids.v \ -../shared_memory/VX_priority_encoder_sm.v \ -../shared_memory/VX_set_bit.v \ -../shared_memory/VX_shared_memory.v \ -../shared_memory/VX_shared_memory_block.v - - -TESTBENCH = vortex_tb.v -TBOUTPUT = waves.lxt #THIS NEEDS TO MATCH THE OUTPUT FILE - #FROM YOUR TESTBENCH -############################################################################### -# BE CAREFUL WHEN CHANGING ITEMS BELOW THIS LINE -############################################################################### -#TOOLS -COMPILER = iverilog -SIMULATOR = vvp -VIEWER = gtkwave -#TOOL OPTIONS -COFLAGS = -v -o -SFLAGS = -v -SOUTPUT = -lxt #SIMULATOR OUTPUT TYPE -#TOOL OUTPUT -COUTPUT = compiler.out #COMPILER OUTPUT -############################################################################### -#MAKE DIRECTIVES -check : $(TESTBENCH) $(SRC) - $(COMPILER) -g2012 -o vortex $(SRC) -I../ -I. - -simulate: $(COUTPUT) - $(SIMULATOR) $(SFLAGS) $(COUTPUT) $(SOUTPUT) - -display: $(TBOUTPUT) - $(VIEWER) $(TBOUTPUT) & -#MAKE DEPENDANCIES -$(TBOUTPUT): $(COUTPUT) - $(SIMULATOR) $(SOPTIONS) $(COUTPUT) $(SOUTPUT) - -$(COUTPUT): $(TESTBENCH) $(SRC) - $(COMPILER) $(COFLAGS) $(COUTPUT) $(TESTBENCH) $(SRC) \ No newline at end of file diff --git a/rtl/icarus/cmdfile b/rtl/icarus/cmdfile deleted file mode 100644 index 139597f9..00000000 --- a/rtl/icarus/cmdfile +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/rtl/icarus/vortex_tb.v b/rtl/icarus/vortex_tb.v deleted file mode 100644 index 57bc92d1..00000000 --- a/rtl/icarus/vortex_tb.v +++ /dev/null @@ -1,57 +0,0 @@ -// `include "../VX_define.v" -// `include "../Vortex.v" - -`timescale 1ns/1ps - -module vortex_tb ( - -); - - reg clk; - reg reset; - reg[31:0] icache_response_instruction; - reg[31:0] icache_request_pc_address; - // IO - reg io_valid; - reg[31:0] io_data; - // Req - reg [31:0] o_m_read_addr; - reg [31:0] o_m_evict_addr; - reg o_m_valid; - reg [31:0] o_m_writedata[8 - 1:0][4-1:0]; - reg o_m_read_or_write; - - // Rsp - reg [31:0] i_m_readdata[8 - 1:0][4-1:0]; - reg i_m_ready; - reg out_ebreak; - - initial begin - - while (!out_ebreak) begin - icache_response_instruction = 0; - end - - end - - Vortex vortex( - .clk (clk), - .reset (reset), - .icache_response_instruction(icache_response_instruction), - .icache_request_pc_address (icache_request_pc_address), - .io_valid (io_valid), - .io_data (io_data), - .o_m_read_addr (o_m_read_addr), - .o_m_evict_addr (o_m_evict_addr), - .o_m_valid (o_m_valid), - .o_m_writedata (o_m_writedata), - .o_m_read_or_write (o_m_read_or_write), - .i_m_readdata (i_m_readdata), - .i_m_ready (i_m_ready), - .out_ebreak (out_ebreak) - ); - - - always @(clk) #5 clk <= ~clk; - -endmodule \ No newline at end of file diff --git a/rtl/modelsim/Makefile b/rtl/modelsim/Makefile index a6b7bafb..b4cf0720 100644 --- a/rtl/modelsim/Makefile +++ b/rtl/modelsim/Makefile @@ -109,8 +109,8 @@ comp: sim: comp - vsim vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log - # vsim -novopt vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log + # vsim vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log + vsim -novopt vortex_tb $(LOG) -c -lib $(LIB) $(CMD) > vortex_sim.log diff --git a/rtl/modelsim/vortex_dpi.cpp b/rtl/modelsim/vortex_dpi.cpp index b5e85b7b..f17f006b 100644 --- a/rtl/modelsim/vortex_dpi.cpp +++ b/rtl/modelsim/vortex_dpi.cpp @@ -17,7 +17,7 @@ extern "C" { void ibus_driver (bool clk, unsigned pc_addr, unsigned * instruction); void dbus_driver (bool clk, unsigned o_m_read_addr, unsigned o_m_evict_addr, bool o_m_valid, svLogicVecVal * o_m_writedata, bool o_m_read_or_write, svLogicVecVal * i_m_readdata, bool * i_m_ready); void io_handler (bool clk, bool io_valid, unsigned io_data); - void gracefulExit(); + void gracefulExit(int); } RAM ram; @@ -50,11 +50,11 @@ void ibus_driver(bool clk, unsigned pc_addr, unsigned * instruction) // printf("Inside ibus_driver\n"); if (clk) { - num_cycles++; (*instruction) = 0; } else { + num_cycles++; uint32_t curr_inst = 0; curr_inst = 0xdeadbeef; @@ -200,10 +200,10 @@ void io_handler(bool clk, bool io_valid, unsigned io_data) } } -void gracefulExit() +void gracefulExit(int cycles) { - fprintf(stderr, "Num Cycles: %d\n", num_cycles); fprintf(stderr, "\n*********************\n\n"); + fprintf(stderr, "DPI Cycle Num: %d\tVerilog Cycle Num: %d\n", num_cycles, cycles); } diff --git a/rtl/modelsim/vortex_tb.v b/rtl/modelsim/vortex_tb.v index fc594daa..ba8546d5 100644 --- a/rtl/modelsim/vortex_tb.v +++ b/rtl/modelsim/vortex_tb.v @@ -27,13 +27,13 @@ import "DPI-C" dbus_driver = function void dbus_driver( input logic clk, import "DPI-C" io_handler = function void io_handler(input logic clk, input logic io_valid, input int io_data); -import "DPI-C" gracefulExit = function void gracefulExit(); +import "DPI-C" gracefulExit = function void gracefulExit(input int cycle_num); module vortex_tb ( ); - reg[31:0] cycle_num; + int cycle_num; reg clk; reg reset; @@ -61,7 +61,7 @@ module vortex_tb ( initial begin // $fdumpfile("vortex1.vcd"); - load_file("../../kernel/vortex_test.hex"); + load_file("../../runtime/vortex_runtime.hex"); $dumpvars(0, vortex_tb); reset = 1; clk = 0; @@ -87,13 +87,24 @@ module vortex_tb ( .out_ebreak (out_ebreak) ); - always @(*) begin + always @(negedge clk) begin ibus_driver(clk, icache_request_pc_address, icache_response_instruction); dbus_driver(clk, o_m_read_addr, o_m_evict_addr, o_m_valid, o_m_writedata, o_m_read_or_write, i_m_readdata, i_m_ready); io_handler (clk, io_valid, io_data); end + always @(posedge clk) begin + if (out_ebreak) begin + gracefulExit(cycle_num); + #40 $finish; + end + end + + always @(posedge clk) begin + cycle_num = cycle_num + 1; + end + always @(clk, posedge reset) begin if (reset) begin reset = 0; @@ -102,11 +113,6 @@ module vortex_tb ( #5 clk <= ~clk; - if (out_ebreak) begin - gracefulExit(); - #20 $finish; - end - end endmodule diff --git a/runtime/Makefile b/runtime/Makefile new file mode 100644 index 00000000..62f44592 --- /dev/null +++ b/runtime/Makefile @@ -0,0 +1,24 @@ + +COMP = /opt/riscv/bin/riscv32-unknown-elf-gcc +CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib + +DMP = /opt/riscv/bin/riscv32-unknown-elf-objdump +CPY = /opt/riscv/bin/riscv32-unknown-elf-objcopy + + +VX_STR = ./startup/vx_start.s +VX_INT = ./intrinsics/vx_intrinsics.s +VX_IO = ./io/vx_io.s ./io/vx_io.c + +VX_MAIN = ./vx_main.c + +all: HEX DUMP ELF + +DUMP: ELF + $(DMP) -D vortex_runtime.elf > vortex_runtime.dump + +HEX: ELF + $(CPY) -O ihex vortex_runtime.elf vortex_runtime.hex + +ELF: + $(COMP) $(CC_FLAGS) $(VX_STR) $(VX_INT) $(VX_IO) $(VX_MAIN) -o vortex_runtime.elf diff --git a/runtime/intrinsics/vx_intrinsics.h b/runtime/intrinsics/vx_intrinsics.h new file mode 100644 index 00000000..0231786f --- /dev/null +++ b/runtime/intrinsics/vx_intrinsics.h @@ -0,0 +1,24 @@ + +// Spawns Warps +void vx_wspawn (unsigned numWarps, unsigned PC_spawn); + +// Changes thread mask (activated/deactivates threads) +void vx_tmc (unsigned numThreads); + +// Warp Barrier +void vx_barrier(unsigned barriedID, unsigned numWarps); + +// split on a predicate +void vx_split (unsigned predicate); + + +// Join +void vx_join (void); + + +// Get Hardware thread ID +unsigned vx_threadID(void); + + +// Get hardware warp ID +unsigned vx_warpID(void); diff --git a/runtime/intrinsics/vx_intrinsics.s b/runtime/intrinsics/vx_intrinsics.s new file mode 100644 index 00000000..5a37c183 --- /dev/null +++ b/runtime/intrinsics/vx_intrinsics.s @@ -0,0 +1,50 @@ + + + +.section .text + + +.type vx_wsapwn, @function +.global vx_wsapwn +vx_wsapwn: + .word 0x00b5106b # wspawn a0(numWarps), a1(PC SPAWN) + ret + +.type vx_tmc, @function +.global vx_tmc +vx_tmc: + .word 0x0005006b # tmc a0 + ret + + +.type vx_barrier, @function +.global vx_barrier +vx_barrier: + .word 0x00b5406b # barrier a0(barrier id), a1(numWarps) + ret + +.type vx_split, @function +.global vx_split +vx_split: + .word 0x0005206b # split a0 + +.type vx_join, @function +.global vx_join +vx_join: + .word 0x0000306b #join + ret + + +.type vx_warpID, @function +.global vx_warpID +vx_warpID: + csrr a0, 0x21 # read warp IDs + ret + + +.type vx_threadID, @function +.global vx_threadID +vx_threadID: + csrr a0, 0x20 # read thread IDs + ret + \ No newline at end of file diff --git a/runtime/io/vx_io.c b/runtime/io/vx_io.c new file mode 100644 index 00000000..32656c23 --- /dev/null +++ b/runtime/io/vx_io.c @@ -0,0 +1,30 @@ + +#include "vx_io.h" + +void vx_print_hex(unsigned f) +{ + vx_print_str(hextoa[f]); + // if (f < 16) + // { + // vx_print_str(hextoa[f]); + // return; + // } + // int temp; + // int sf = 32; + // bool start = false; + // do + // { + // temp = (f >> (sf - 4)) & 0xf; + // if (temp != 0) start = true; + // if (start) vx_print_str(hextoa[temp]); + // sf -= 4; + // } while(sf > 0); +} + + +void vx_printf(char * c, unsigned f) +{ + vx_print_str(c); + vx_print_hex(f); + vx_print_str("\n"); +} \ No newline at end of file diff --git a/emulator/vortex_software/vx_os/vx_io/vx_io.h b/runtime/io/vx_io.h similarity index 74% rename from emulator/vortex_software/vx_os/vx_io/vx_io.h rename to runtime/io/vx_io.h index f3ed14f6..0b92ea5b 100644 --- a/emulator/vortex_software/vx_os/vx_io/vx_io.h +++ b/runtime/io/vx_io.h @@ -6,4 +6,5 @@ static char * hextoa[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"}; void vx_print_hex(unsigned); void vx_print_str(char *); -void vx_printf(char *, unsigned); \ No newline at end of file +void vx_printf(char *, unsigned); +void vx_printc(unsigned, char c); \ No newline at end of file diff --git a/emulator/vortex_software/vx_os/vx_io/vx_io.s b/runtime/io/vx_io.s similarity index 89% rename from emulator/vortex_software/vx_os/vx_io/vx_io.s rename to runtime/io/vx_io.s index 676b92bd..806f2790 100644 --- a/emulator/vortex_software/vx_os/vx_io/vx_io.s +++ b/runtime/io/vx_io.s @@ -22,8 +22,8 @@ be: .type vx_printc, @function .global vx_printc vx_printc: - la a7, 0x00010000 - sw a1, 0(a7) + la t0, 0x00010000 + sw a1, 0(t0) ret diff --git a/emulator/vortex_software/linker.ld b/runtime/linker.ld similarity index 100% rename from emulator/vortex_software/linker.ld rename to runtime/linker.ld diff --git a/runtime/startup/vx_start.s b/runtime/startup/vx_start.s new file mode 100644 index 00000000..1719a506 --- /dev/null +++ b/runtime/startup/vx_start.s @@ -0,0 +1,42 @@ + + +.type _start, @function +.global _start +_start: + li a0, 4 + .word 0x0005006b # tmc a0 + csrr a1,0x20 + slli a1, a1, 2 + + la a2, 0x20000000 + add a2, a2, a1 + sw a1, 0(a2) + + la a2, 0x40000000 + add a2, a2, a1 + li a3, 5 + sw a3, 0(a2) + + la a2, 0x80000000 + add a2, a2, a1 + li a3, 7 + sw a3, 0(a2) + + la a2, 0x60000000 + add a2, a2, a1 + li a3, 7 + sw a3, 0(a2) + + la a2, 0x20000000 + add a2, a2, a1 + lw a4, 0(a2) + li a0, 0 + .word 0x0005006b # tmc a0 + ########################## + # lui sp, 0x7ffff + # jal main + # li a0, 0 + # .word 0x0005006b # tmc a0 + + + diff --git a/runtime/vortex_runtime.dump b/runtime/vortex_runtime.dump new file mode 100644 index 00000000..871f1252 --- /dev/null +++ b/runtime/vortex_runtime.dump @@ -0,0 +1,293 @@ + +vortex_runtime.elf: file format elf32-littleriscv + + +Disassembly of section .text: + +80000000 <_start>: +80000000: 00400513 li a0,4 +80000004: 0005006b 0x5006b +80000008: 020025f3 csrr a1,0x20 +8000000c: 00259593 slli a1,a1,0x2 +80000010: 20000637 lui a2,0x20000 +80000014: 00b60633 add a2,a2,a1 +80000018: 00b62023 sw a1,0(a2) # 20000000 <_start-0x60000000> +8000001c: 40000637 lui a2,0x40000 +80000020: 00b60633 add a2,a2,a1 +80000024: 00500693 li a3,5 +80000028: 00d62023 sw a3,0(a2) # 40000000 <_start-0x40000000> +8000002c: 80000637 lui a2,0x80000 +80000030: 00b60633 add a2,a2,a1 +80000034: 00700693 li a3,7 +80000038: 00d62023 sw a3,0(a2) # 80000000 +8000003c: 60000637 lui a2,0x60000 +80000040: 00b60633 add a2,a2,a1 +80000044: 00700693 li a3,7 +80000048: 00d62023 sw a3,0(a2) # 60000000 <_start-0x20000000> +8000004c: 20000637 lui a2,0x20000 +80000050: 00b60633 add a2,a2,a1 +80000054: 00062703 lw a4,0(a2) # 20000000 <_start-0x60000000> +80000058: 00000513 li a0,0 +8000005c: 0005006b 0x5006b + +80000060 : +80000060: 00b5106b 0xb5106b +80000064: 00008067 ret + +80000068 : +80000068: 0005006b 0x5006b +8000006c: 00008067 ret + +80000070 : +80000070: 00b5406b 0xb5406b +80000074: 00008067 ret + +80000078 : +80000078: 0005206b 0x5206b + +8000007c : +8000007c: 0000306b 0x306b +80000080: 00008067 ret + +80000084 : +80000084: 02102573 csrr a0,0x21 +80000088: 00008067 ret + +8000008c : +8000008c: 02002573 csrr a0,0x20 +80000090: 00008067 ret + +80000094 : +80000094: ff410113 addi sp,sp,-12 +80000098: 00112023 sw ra,0(sp) +8000009c: 00b12223 sw a1,4(sp) + +800000a0 : +800000a0: 00054583 lbu a1,0(a0) +800000a4: 00058863 beqz a1,800000b4 +800000a8: 01c000ef jal ra,800000c4 +800000ac: 00150513 addi a0,a0,1 +800000b0: ff1ff06f j 800000a0 + +800000b4 : +800000b4: 00012083 lw ra,0(sp) +800000b8: 00412583 lw a1,4(sp) +800000bc: 00c10113 addi sp,sp,12 +800000c0: 00008067 ret + +800000c4 : +800000c4: 000102b7 lui t0,0x10 +800000c8: 00b2a023 sw a1,0(t0) # 10000 <_start-0x7fff0000> +800000cc: 00008067 ret + +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: fea42623 sw a0,-20(s0) +800000e4: 810007b7 lui a5,0x81000 +800000e8: fec42703 lw a4,-20(s0) +800000ec: 00271713 slli a4,a4,0x2 +800000f0: 08478793 addi a5,a5,132 # 81000084 +800000f4: 00f707b3 add a5,a4,a5 +800000f8: 0007a783 lw a5,0(a5) +800000fc: 00078513 mv a0,a5 +80000100: f95ff0ef jal ra,80000094 +80000104: 00000013 nop +80000108: 01c12083 lw ra,28(sp) +8000010c: 01812403 lw s0,24(sp) +80000110: 02010113 addi sp,sp,32 +80000114: 00008067 ret + +80000118 : +80000118: fe010113 addi sp,sp,-32 +8000011c: 00112e23 sw ra,28(sp) +80000120: 00812c23 sw s0,24(sp) +80000124: 02010413 addi s0,sp,32 +80000128: fea42623 sw a0,-20(s0) +8000012c: feb42423 sw a1,-24(s0) +80000130: fec42503 lw a0,-20(s0) +80000134: f61ff0ef jal ra,80000094 +80000138: fe842503 lw a0,-24(s0) +8000013c: f95ff0ef jal ra,800000d0 +80000140: 810007b7 lui a5,0x81000 +80000144: 04078513 addi a0,a5,64 # 81000040 +80000148: f4dff0ef jal ra,80000094 +8000014c: 00000013 nop +80000150: 01c12083 lw ra,28(sp) +80000154: 01812403 lw s0,24(sp) +80000158: 02010113 addi sp,sp,32 +8000015c: 00008067 ret + +80000160
: +80000160: fe010113 addi sp,sp,-32 +80000164: 00112e23 sw ra,28(sp) +80000168: 00812c23 sw s0,24(sp) +8000016c: 02010413 addi s0,sp,32 +80000170: 00400513 li a0,4 +80000174: ef5ff0ef jal ra,80000068 +80000178: f15ff0ef jal ra,8000008c +8000017c: fea42623 sw a0,-20(s0) +80000180: fec42703 lw a4,-20(s0) +80000184: 810007b7 lui a5,0x81000 +80000188: fec42683 lw a3,-20(s0) +8000018c: 00269693 slli a3,a3,0x2 +80000190: 10478793 addi a5,a5,260 # 81000104 +80000194: 00f687b3 add a5,a3,a5 +80000198: 00e7a023 sw a4,0(a5) +8000019c: 00000793 li a5,0 +800001a0: 00078513 mv a0,a5 +800001a4: 01c12083 lw ra,28(sp) +800001a8: 01812403 lw s0,24(sp) +800001ac: 02010113 addi sp,sp,32 +800001b0: 00008067 ret + +Disassembly of section .rodata: + +81000000 <.rodata>: +81000000: 0030 addi a2,sp,8 +81000002: 0000 unimp +81000004: 0031 c.nop 12 +81000006: 0000 unimp +81000008: 0032 c.slli zero,0xc +8100000a: 0000 unimp +8100000c: 00000033 add zero,zero,zero +81000010: 0034 addi a3,sp,8 +81000012: 0000 unimp +81000014: 0035 c.nop 13 +81000016: 0000 unimp +81000018: 0036 c.slli zero,0xd +8100001a: 0000 unimp +8100001c: 00000037 lui zero,0x0 +81000020: 0038 addi a4,sp,8 +81000022: 0000 unimp +81000024: 0039 c.nop 14 +81000026: 0000 unimp +81000028: 0061 c.nop 24 +8100002a: 0000 unimp +8100002c: 0062 c.slli zero,0x18 +8100002e: 0000 unimp +81000030: 00000063 beqz zero,81000030 +81000034: 0064 addi s1,sp,12 +81000036: 0000 unimp +81000038: 0065 c.nop 25 +8100003a: 0000 unimp +8100003c: 0066 c.slli zero,0x19 +8100003e: 0000 unimp +81000040: 000a c.slli zero,0x2 +81000042: 0000 unimp +81000044: 0030 addi a2,sp,8 +81000046: 0000 unimp +81000048: 0031 c.nop 12 +8100004a: 0000 unimp +8100004c: 0032 c.slli zero,0xc +8100004e: 0000 unimp +81000050: 00000033 add zero,zero,zero +81000054: 0034 addi a3,sp,8 +81000056: 0000 unimp +81000058: 0035 c.nop 13 +8100005a: 0000 unimp +8100005c: 0036 c.slli zero,0xd +8100005e: 0000 unimp +81000060: 00000037 lui zero,0x0 +81000064: 0038 addi a4,sp,8 +81000066: 0000 unimp +81000068: 0039 c.nop 14 +8100006a: 0000 unimp +8100006c: 0061 c.nop 24 +8100006e: 0000 unimp +81000070: 0062 c.slli zero,0x18 +81000072: 0000 unimp +81000074: 00000063 beqz zero,81000074 +81000078: 0064 addi s1,sp,12 +8100007a: 0000 unimp +8100007c: 0065 c.nop 25 +8100007e: 0000 unimp +81000080: 0066 c.slli zero,0x19 + +Disassembly of section .data: + +81000084 : +81000084: 0000 unimp +81000086: 8100 0x8100 +81000088: 0004 0x4 +8100008a: 8100 0x8100 +8100008c: 0008 0x8 +8100008e: 8100 0x8100 +81000090: 000c 0xc +81000092: 8100 0x8100 +81000094: 0010 0x10 +81000096: 8100 0x8100 +81000098: 0014 0x14 +8100009a: 8100 0x8100 +8100009c: 0018 0x18 +8100009e: 8100 0x8100 +810000a0: 001c 0x1c +810000a2: 8100 0x8100 +810000a4: 0020 addi s0,sp,8 +810000a6: 8100 0x8100 +810000a8: 0024 addi s1,sp,8 +810000aa: 8100 0x8100 +810000ac: 0028 addi a0,sp,8 +810000ae: 8100 0x8100 +810000b0: 002c addi a1,sp,8 +810000b2: 8100 0x8100 +810000b4: 0030 addi a2,sp,8 +810000b6: 8100 0x8100 +810000b8: 0034 addi a3,sp,8 +810000ba: 8100 0x8100 +810000bc: 0038 addi a4,sp,8 +810000be: 8100 0x8100 +810000c0: 003c addi a5,sp,8 +810000c2: 8100 0x8100 + +810000c4 : +810000c4: 0044 addi s1,sp,4 +810000c6: 8100 0x8100 +810000c8: 0048 addi a0,sp,4 +810000ca: 8100 0x8100 +810000cc: 004c addi a1,sp,4 +810000ce: 8100 0x8100 +810000d0: 0050 addi a2,sp,4 +810000d2: 8100 0x8100 +810000d4: 0054 addi a3,sp,4 +810000d6: 8100 0x8100 +810000d8: 0058 addi a4,sp,4 +810000da: 8100 0x8100 +810000dc: 005c addi a5,sp,4 +810000de: 8100 0x8100 +810000e0: 0060 addi s0,sp,12 +810000e2: 8100 0x8100 +810000e4: 0064 addi s1,sp,12 +810000e6: 8100 0x8100 +810000e8: 0068 addi a0,sp,12 +810000ea: 8100 0x8100 +810000ec: 006c addi a1,sp,12 +810000ee: 8100 0x8100 +810000f0: 0070 addi a2,sp,12 +810000f2: 8100 0x8100 +810000f4: 0074 addi a3,sp,12 +810000f6: 8100 0x8100 +810000f8: 0078 addi a4,sp,12 +810000fa: 8100 0x8100 +810000fc: 007c addi a5,sp,12 +810000fe: 8100 0x8100 +81000100: 0080 addi s0,sp,64 +81000102: 8100 0x8100 + +Disassembly of section .bss: + +81000104 : + ... + +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/emulator/vortex_software/vx_os/vx_util/.DS_Store b/runtime/vortex_runtime.elf similarity index 55% rename from emulator/vortex_software/vx_os/vx_util/.DS_Store rename to runtime/vortex_runtime.elf index 0ee024ad..c6deec57 100644 Binary files a/emulator/vortex_software/vx_os/vx_util/.DS_Store and b/runtime/vortex_runtime.elf differ diff --git a/runtime/vortex_runtime.hex b/runtime/vortex_runtime.hex new file mode 100644 index 00000000..bf518134 --- /dev/null +++ b/runtime/vortex_runtime.hex @@ -0,0 +1,49 @@ +:0200000480007A +:10000000130540006B000500F325000293952500C1 +:10001000370600203306B6002320B600370600401E +:100020003306B600930650002320D6003706008022 +:100030003306B600930670002320D6003706006012 +:100040003306B600930670002320D6003706002042 +:100050003306B60003270600130500006B000500F9 +:100060006B10B500678000006B0005006780000022 +:100070006B40B500678000006B2005006B3000000E +:10008000678000007325100267800000732500025E +:1000900067800000130141FF232011002322B100DB +:1000A0008345050063880500EF00C00113051500B6 +:1000B0006FF01FFF83200100832541001301C10061 +:1000C00067800000B702010023A0B2006780000033 +:1000D000130101FE232E1100232C810013040102C1 +:1000E0002326A4FEB70700810327C4FE13172700A9 +:1000F00093874708B307F70083A707001385070016 +:10010000EFF05FF9130000008320C1010324810197 +:100110001301010267800000130101FE232E11006C +:10012000232C8100130401022326A4FE2324B4FE01 +:100130000325C4FEEFF01FF6032584FEEFF05FF900 +:10014000B707008113850704EFF0DFF41300000008 +:100150008320C10103248101130101026780000093 +:10016000130101FE232E1100232C81001304010230 +:1001700013054000EFF05FEFEFF05FF12326A4FEE0 +:100180000327C4FEB70700818326C4FE939626008A +:1001900093874710B387F60023A0E700930700007A +:1001A000138507008320C10103248101130101028B +:0401B0006780000064 +:02000004810079 +:10000000300000003100000032000000330000002A +:10001000340000003500000036000000370000000A +:10002000380000003900000061000000620000009C +:10003000630000006400000065000000660000002E +:100040000A00000030000000310000003200000013 +:1000500033000000340000003500000036000000CE +:100060003700000038000000390000006100000087 +:1000700062000000630000006400000065000000F2 +:02008000660018 +:100084000000008104000081080000810C00008150 +:100094001000008114000081180000811C00008100 +:1000A4002000008124000081280000812C000081B0 +:1000B4003000008134000081380000813C00008160 +:1000C40044000081480000814C0000815000008100 +:1000D40054000081580000815C00008160000081B0 +:1000E40064000081680000816C0000817000008160 +:1000F40074000081780000817C0000818000008110 +:040000058000000077 +:00000001FF diff --git a/runtime/vx_main.c b/runtime/vx_main.c new file mode 100644 index 00000000..4e59a852 --- /dev/null +++ b/runtime/vx_main.c @@ -0,0 +1,31 @@ + +#include "intrinsics/vx_intrinsics.h" +#include "io/vx_io.h" + +int arr[4]; + +int main() +{ + // vx_print_str("Hello from runtime\n"); + + vx_tmc(4); // Activate 4 threads + + unsigned tid = vx_threadID(); // Get TID + + + arr[tid] = tid; + + // vx_tmc(1); + + // vx_print_hex(arr[0]); + // vx_print_str("\n"); + // vx_print_hex(arr[1]); + // vx_print_str("\n"); + // vx_print_hex(arr[2]); + // vx_print_str("\n"); + // vx_print_hex(arr[3]); + // vx_print_str("\n"); + + + return 0; +} \ No newline at end of file