diff --git a/runtime/Makefile b/runtime/Makefile index 62f44592..4a4f0b80 100644 --- a/runtime/Makefile +++ b/runtime/Makefile @@ -9,6 +9,7 @@ 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_TEST = ./tests/tests.c VX_MAIN = ./vx_main.c @@ -21,4 +22,4 @@ 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 + $(COMP) $(CC_FLAGS) $(VX_STR) $(VX_INT) $(VX_IO) $(VX_TEST) $(VX_MAIN) -o vortex_runtime.elf diff --git a/runtime/intrinsics/vx_intrinsics.h b/runtime/intrinsics/vx_intrinsics.h index 8459789e..a346a42f 100644 --- a/runtime/intrinsics/vx_intrinsics.h +++ b/runtime/intrinsics/vx_intrinsics.h @@ -1,4 +1,8 @@ +#ifndef VX_INTRINSICS + +#define VX_INTRINSICS + // Spawns Warps void vx_wspawn (unsigned numWarps, unsigned PC_spawn); @@ -31,4 +35,8 @@ unsigned vx_warpID(void); #define __else else -#define __endif vx_join(); \ No newline at end of file +#define __endif vx_join(); + + + +#endif \ No newline at end of file diff --git a/runtime/intrinsics/vx_intrinsics.s b/runtime/intrinsics/vx_intrinsics.s index c2852ca7..5a85be0b 100644 --- a/runtime/intrinsics/vx_intrinsics.s +++ b/runtime/intrinsics/vx_intrinsics.s @@ -4,9 +4,9 @@ .section .text -.type vx_wsapwn, @function -.global vx_wsapwn -vx_wsapwn: +.type vx_wspawn, @function +.global vx_wspawn +vx_wspawn: .word 0x00b5106b # wspawn a0(numWarps), a1(PC SPAWN) ret diff --git a/runtime/startup/vx_start.s b/runtime/startup/vx_start.s index cf585b33..4c631124 100644 --- a/runtime/startup/vx_start.s +++ b/runtime/startup/vx_start.s @@ -3,64 +3,39 @@ .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 - ########################## - # li a0, 4 - # .word 0x0005006b # tmc 4 - # csrr a1,0x20 # get tid - # slli a1, a1, 10 # multiply tid by 1024 - # lui sp, 0x6ffff # load base sp - # sub sp, sp, a1 # sub sp - (1024*tid) - - # la a2, 0x20000000 - # csrr a3,0x20 # get tid - # slli a3, a3, 2 - # add a2, a2, a3 - # sw a3, 0(a2) - # lw a4, 0(a2) - - # li a0, 0 - # .word 0x0005006b # tmc a0 - ########################## - li a0, 4 - .word 0x0005006b # tmc 4 - csrr a1,0x20 # get tid - slli a1, a1, 10 # multiply tid by 1024 - lui sp, 0x6ffff # load base sp - sub sp, sp, a1 # sub sp - (1024*tid) - li a0, 4 - .word 0x0005006b # tmc 4 + # la a1, vx_set_sp + # li a0, 8 + # .word 0x00b5106b # wspawn a0(numWarps), a1(PC SPAWN) + jal vx_set_sp jal main li a0, 0 .word 0x0005006b # tmc a0 +.type vx_set_sp, @function +.global vx_set_sp +vx_set_sp: + li a0, 4 + .word 0x0005006b # tmc 4 + + csrr a3, 0x21 # get wid + slli a3, a3, 15 # shift by wid + csrr a2, 0x20 # get tid + slli a1, a2, 10 # multiply tid by 1024 + slli a2, a2, 2 # multiply tid by 4 + lui sp, 0x6ffff # load base sp + sub sp, sp, a1 # sub sp - (1024*tid) + sub sp, sp, a3 # shoft per warp + add sp, sp, a2 # shift sp for better performance + + csrr a3, 0x21 # get wid + beqz a3, RETURN + li a0, 0 + .word 0x0005006b # tmc 0 +RETURN: + li a0, 1 + .word 0x0005006b # tmc 1 + ret + + diff --git a/runtime/tests/tests.c b/runtime/tests/tests.c new file mode 100644 index 00000000..7e981cf3 --- /dev/null +++ b/runtime/tests/tests.c @@ -0,0 +1,117 @@ + + +#include "tests.h" +#include "../intrinsics/vx_intrinsics.h" +#include "../io/vx_io.h" + +void test_tmc() +{ + vx_print_str("test_tmc\n"); + + vx_tmc(4); + + 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; +} + +void test_divergence() +{ + unsigned tid = vx_threadID(); // Get TID + + bool b = tid < 2; + __if (b) + { + bool c = tid < 1; + __if (c) + { + arr[tid] = 10; + } + __else + { + arr[tid] = 11; + } + __endif + } + __else + { + bool c = tid < 3; + __if (c) + { + arr[tid] = 12; + } + __else + { + arr[tid] = 13; + } + __endif + } + __endif + + 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"); + +} + + +unsigned wsapwn_arr[4]; + + +void simple_kernel() +{ + unsigned wid = vx_warpID(); + + wsapwn_arr[wid] = wid; + + if (wid != 0) + { + vx_tmc(0); + } + +} + +void test_wsapwn() +{ + unsigned func_ptr = (unsigned) simple_kernel; + vx_wspawn(4, func_ptr); + simple_kernel(); + + vx_print_hex(wsapwn_arr[0]); + vx_print_str("\n"); + vx_print_hex(wsapwn_arr[1]); + vx_print_str("\n"); + vx_print_hex(wsapwn_arr[2]); + vx_print_str("\n"); + vx_print_hex(wsapwn_arr[3]); + vx_print_str("\n"); +} + + + + + + + + + + + + diff --git a/runtime/tests/tests.h b/runtime/tests/tests.h new file mode 100644 index 00000000..fbca2546 --- /dev/null +++ b/runtime/tests/tests.h @@ -0,0 +1,16 @@ + + +#ifndef TESTS +#define TESTS + +int arr[4]; +void test_tmc(); + +void test_divergence(); + + +void test_wsapwn(); + + + +#endif \ No newline at end of file diff --git a/runtime/vortex_runtime.dump b/runtime/vortex_runtime.dump index c7208dbf..7ac83d05 100644 --- a/runtime/vortex_runtime.dump +++ b/runtime/vortex_runtime.dump @@ -5,291 +5,383 @@ 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: 00a59593 slli a1,a1,0xa -80000010: 6ffff137 lui sp,0x6ffff -80000014: 40b10133 sub sp,sp,a1 -80000018: 00400513 li a0,4 +80000000: 00000597 auipc a1,0x0 +80000004: 02058593 addi a1,a1,32 # 80000020 +80000008: 00800513 li a0,8 +8000000c: 00b5106b 0xb5106b +80000010: 010000ef jal ra,80000020 +80000014: 4dc000ef jal ra,800004f0
+80000018: 00000513 li a0,0 8000001c: 0005006b 0x5006b -80000020: 380000ef jal ra,800003a0
-80000024: 00000513 li a0,0 -80000028: 0005006b 0x5006b -8000002c : -8000002c: 00b5106b 0xb5106b -80000030: 00008067 ret +80000020 : +80000020: 00400513 li a0,4 +80000024: 0005006b 0x5006b +80000028: 021026f3 csrr a3,0x21 +8000002c: 00f69693 slli a3,a3,0xf +80000030: 02002673 csrr a2,0x20 +80000034: 00a61593 slli a1,a2,0xa +80000038: 00261613 slli a2,a2,0x2 +8000003c: 6ffff137 lui sp,0x6ffff +80000040: 40b10133 sub sp,sp,a1 +80000044: 40d10133 sub sp,sp,a3 +80000048: 00c10133 add sp,sp,a2 +8000004c: 021026f3 csrr a3,0x21 +80000050: 00068663 beqz a3,8000005c +80000054: 00000513 li a0,0 +80000058: 0005006b 0x5006b -80000034 : -80000034: 0005006b 0x5006b -80000038: 00008067 ret +8000005c : +8000005c: 00100513 li a0,1 +80000060: 0005006b 0x5006b +80000064: 00008067 ret -8000003c : -8000003c: 00b5406b 0xb5406b -80000040: 00008067 ret +80000068 : +80000068: 00b5106b 0xb5106b +8000006c: 00008067 ret -80000044 : -80000044: 0005206b 0x5206b -80000048: 00008067 ret +80000070 : +80000070: 0005006b 0x5006b +80000074: 00008067 ret -8000004c : -8000004c: 0000306b 0x306b -80000050: 00008067 ret +80000078 : +80000078: 00b5406b 0xb5406b +8000007c: 00008067 ret -80000054 : -80000054: 02102573 csrr a0,0x21 -80000058: 00008067 ret +80000080 : +80000080: 0005206b 0x5206b +80000084: 00008067 ret -8000005c : -8000005c: 02002573 csrr a0,0x20 -80000060: 00008067 ret +80000088 : +80000088: 0000306b 0x306b +8000008c: 00008067 ret -80000064 : -80000064: ff410113 addi sp,sp,-12 # 6fffeff4 <_start-0x1000100c> -80000068: 00112023 sw ra,0(sp) -8000006c: 00b12223 sw a1,4(sp) +80000090 : +80000090: 02102573 csrr a0,0x21 +80000094: 00008067 ret -80000070 : -80000070: 00054583 lbu a1,0(a0) -80000074: 00058863 beqz a1,80000084 -80000078: 01c000ef jal ra,80000094 -8000007c: 00150513 addi a0,a0,1 -80000080: ff1ff06f j 80000070 - -80000084 : -80000084: 00012083 lw ra,0(sp) -80000088: 00412583 lw a1,4(sp) -8000008c: 00c10113 addi sp,sp,12 -80000090: 00008067 ret - -80000094 : -80000094: 000102b7 lui t0,0x10 -80000098: 00b2a023 sw a1,0(t0) # 10000 <_start-0x7fff0000> +80000098 : +80000098: 02002573 csrr a0,0x20 8000009c: 00008067 ret -800000a0 : -800000a0: fe010113 addi sp,sp,-32 -800000a4: 00112e23 sw ra,28(sp) -800000a8: 00812c23 sw s0,24(sp) -800000ac: 02010413 addi s0,sp,32 -800000b0: fea42623 sw a0,-20(s0) -800000b4: 810007b7 lui a5,0x81000 -800000b8: fec42703 lw a4,-20(s0) -800000bc: 00271713 slli a4,a4,0x2 -800000c0: 0ac78793 addi a5,a5,172 # 810000ac -800000c4: 00f707b3 add a5,a4,a5 -800000c8: 0007a783 lw a5,0(a5) -800000cc: 00078513 mv a0,a5 -800000d0: f95ff0ef jal ra,80000064 -800000d4: 00000013 nop -800000d8: 01c12083 lw ra,28(sp) -800000dc: 01812403 lw s0,24(sp) -800000e0: 02010113 addi sp,sp,32 -800000e4: 00008067 ret +800000a0 : +800000a0: ff410113 addi sp,sp,-12 # 6fffeff4 <_start-0x1000100c> +800000a4: 00112023 sw ra,0(sp) +800000a8: 00b12223 sw a1,4(sp) -800000e8 : -800000e8: fe010113 addi sp,sp,-32 -800000ec: 00112e23 sw ra,28(sp) -800000f0: 00812c23 sw s0,24(sp) -800000f4: 02010413 addi s0,sp,32 -800000f8: fea42623 sw a0,-20(s0) -800000fc: feb42423 sw a1,-24(s0) -80000100: fec42503 lw a0,-20(s0) -80000104: f61ff0ef jal ra,80000064 -80000108: fe842503 lw a0,-24(s0) -8000010c: f95ff0ef jal ra,800000a0 -80000110: 810007b7 lui a5,0x81000 -80000114: 04078513 addi a0,a5,64 # 81000040 -80000118: f4dff0ef jal ra,80000064 -8000011c: 00000013 nop -80000120: 01c12083 lw ra,28(sp) -80000124: 01812403 lw s0,24(sp) -80000128: 02010113 addi sp,sp,32 -8000012c: 00008067 ret +800000ac : +800000ac: 00054583 lbu a1,0(a0) +800000b0: 00058863 beqz a1,800000c0 +800000b4: 01c000ef jal ra,800000d0 +800000b8: 00150513 addi a0,a0,1 +800000bc: ff1ff06f j 800000ac -80000130 : -80000130: fe010113 addi sp,sp,-32 -80000134: 00112e23 sw ra,28(sp) -80000138: 00812c23 sw s0,24(sp) -8000013c: 02010413 addi s0,sp,32 -80000140: 810007b7 lui a5,0x81000 -80000144: 08478513 addi a0,a5,132 # 81000084 -80000148: f1dff0ef jal ra,80000064 -8000014c: 00400513 li a0,4 -80000150: ee5ff0ef jal ra,80000034 -80000154: f09ff0ef jal ra,8000005c -80000158: fea42623 sw a0,-20(s0) -8000015c: fec42703 lw a4,-20(s0) -80000160: 810007b7 lui a5,0x81000 -80000164: fec42683 lw a3,-20(s0) -80000168: 00269693 slli a3,a3,0x2 -8000016c: 12c78793 addi a5,a5,300 # 8100012c -80000170: 00f687b3 add a5,a3,a5 -80000174: 00e7a023 sw a4,0(a5) -80000178: 00100513 li a0,1 -8000017c: eb9ff0ef jal ra,80000034 -80000180: 810007b7 lui a5,0x81000 -80000184: 12c7a783 lw a5,300(a5) # 8100012c -80000188: 00078513 mv a0,a5 -8000018c: f15ff0ef jal ra,800000a0 -80000190: 810007b7 lui a5,0x81000 -80000194: 09078513 addi a0,a5,144 # 81000090 -80000198: ecdff0ef jal ra,80000064 +800000c0 : +800000c0: 00012083 lw ra,0(sp) +800000c4: 00412583 lw a1,4(sp) +800000c8: 00c10113 addi sp,sp,12 +800000cc: 00008067 ret + +800000d0 : +800000d0: 000102b7 lui t0,0x10 +800000d4: 00b2a023 sw a1,0(t0) # 10000 <_start-0x7fff0000> +800000d8: 00008067 ret + +800000dc : +800000dc: fe010113 addi sp,sp,-32 +800000e0: 00112e23 sw ra,28(sp) +800000e4: 00812c23 sw s0,24(sp) +800000e8: 02010413 addi s0,sp,32 +800000ec: fea42623 sw a0,-20(s0) +800000f0: 810007b7 lui a5,0x81000 +800000f4: fec42703 lw a4,-20(s0) +800000f8: 00271713 slli a4,a4,0x2 +800000fc: 0e878793 addi a5,a5,232 # 810000e8 +80000100: 00f707b3 add a5,a4,a5 +80000104: 0007a783 lw a5,0(a5) +80000108: 00078513 mv a0,a5 +8000010c: f95ff0ef jal ra,800000a0 +80000110: 00000013 nop +80000114: 01c12083 lw ra,28(sp) +80000118: 01812403 lw s0,24(sp) +8000011c: 02010113 addi sp,sp,32 +80000120: 00008067 ret + +80000124 : +80000124: fe010113 addi sp,sp,-32 +80000128: 00112e23 sw ra,28(sp) +8000012c: 00812c23 sw s0,24(sp) +80000130: 02010413 addi s0,sp,32 +80000134: fea42623 sw a0,-20(s0) +80000138: feb42423 sw a1,-24(s0) +8000013c: fec42503 lw a0,-20(s0) +80000140: f61ff0ef jal ra,800000a0 +80000144: fe842503 lw a0,-24(s0) +80000148: f95ff0ef jal ra,800000dc +8000014c: 810007b7 lui a5,0x81000 +80000150: 04078513 addi a0,a5,64 # 81000040 +80000154: f4dff0ef jal ra,800000a0 +80000158: 00000013 nop +8000015c: 01c12083 lw ra,28(sp) +80000160: 01812403 lw s0,24(sp) +80000164: 02010113 addi sp,sp,32 +80000168: 00008067 ret + +8000016c : +8000016c: fe010113 addi sp,sp,-32 +80000170: 00112e23 sw ra,28(sp) +80000174: 00812c23 sw s0,24(sp) +80000178: 02010413 addi s0,sp,32 +8000017c: 810007b7 lui a5,0x81000 +80000180: 08478513 addi a0,a5,132 # 81000084 +80000184: f1dff0ef jal ra,800000a0 +80000188: 00400513 li a0,4 +8000018c: ee5ff0ef jal ra,80000070 +80000190: f09ff0ef jal ra,80000098 +80000194: fea42623 sw a0,-20(s0) +80000198: fec42703 lw a4,-20(s0) 8000019c: 810007b7 lui a5,0x81000 -800001a0: 12c78793 addi a5,a5,300 # 8100012c -800001a4: 0047a783 lw a5,4(a5) -800001a8: 00078513 mv a0,a5 -800001ac: ef5ff0ef jal ra,800000a0 -800001b0: 810007b7 lui a5,0x81000 -800001b4: 09078513 addi a0,a5,144 # 81000090 -800001b8: eadff0ef jal ra,80000064 +800001a0: fec42683 lw a3,-20(s0) +800001a4: 00269693 slli a3,a3,0x2 +800001a8: 1a878793 addi a5,a5,424 # 810001a8 +800001ac: 00f687b3 add a5,a3,a5 +800001b0: 00e7a023 sw a4,0(a5) +800001b4: 00100513 li a0,1 +800001b8: eb9ff0ef jal ra,80000070 800001bc: 810007b7 lui a5,0x81000 -800001c0: 12c78793 addi a5,a5,300 # 8100012c -800001c4: 0087a783 lw a5,8(a5) -800001c8: 00078513 mv a0,a5 -800001cc: ed5ff0ef jal ra,800000a0 -800001d0: 810007b7 lui a5,0x81000 -800001d4: 09078513 addi a0,a5,144 # 81000090 -800001d8: e8dff0ef jal ra,80000064 -800001dc: 810007b7 lui a5,0x81000 -800001e0: 12c78793 addi a5,a5,300 # 8100012c -800001e4: 00c7a783 lw a5,12(a5) -800001e8: 00078513 mv a0,a5 -800001ec: eb5ff0ef jal ra,800000a0 -800001f0: 810007b7 lui a5,0x81000 -800001f4: 09078513 addi a0,a5,144 # 81000090 -800001f8: e6dff0ef jal ra,80000064 -800001fc: 00000013 nop -80000200: 01c12083 lw ra,28(sp) -80000204: 01812403 lw s0,24(sp) -80000208: 02010113 addi sp,sp,32 -8000020c: 00008067 ret +800001c0: 1a87a783 lw a5,424(a5) # 810001a8 +800001c4: 00078513 mv a0,a5 +800001c8: f15ff0ef jal ra,800000dc +800001cc: 810007b7 lui a5,0x81000 +800001d0: 09078513 addi a0,a5,144 # 81000090 +800001d4: ecdff0ef jal ra,800000a0 +800001d8: 810007b7 lui a5,0x81000 +800001dc: 1a878793 addi a5,a5,424 # 810001a8 +800001e0: 0047a783 lw a5,4(a5) +800001e4: 00078513 mv a0,a5 +800001e8: ef5ff0ef jal ra,800000dc +800001ec: 810007b7 lui a5,0x81000 +800001f0: 09078513 addi a0,a5,144 # 81000090 +800001f4: eadff0ef jal ra,800000a0 +800001f8: 810007b7 lui a5,0x81000 +800001fc: 1a878793 addi a5,a5,424 # 810001a8 +80000200: 0087a783 lw a5,8(a5) +80000204: 00078513 mv a0,a5 +80000208: ed5ff0ef jal ra,800000dc +8000020c: 810007b7 lui a5,0x81000 +80000210: 09078513 addi a0,a5,144 # 81000090 +80000214: e8dff0ef jal ra,800000a0 +80000218: 810007b7 lui a5,0x81000 +8000021c: 1a878793 addi a5,a5,424 # 810001a8 +80000220: 00c7a783 lw a5,12(a5) +80000224: 00078513 mv a0,a5 +80000228: eb5ff0ef jal ra,800000dc +8000022c: 810007b7 lui a5,0x81000 +80000230: 09078513 addi a0,a5,144 # 81000090 +80000234: e6dff0ef jal ra,800000a0 +80000238: 00000013 nop +8000023c: 01c12083 lw ra,28(sp) +80000240: 01812403 lw s0,24(sp) +80000244: 02010113 addi sp,sp,32 +80000248: 00008067 ret -80000210 : -80000210: fe010113 addi sp,sp,-32 -80000214: 00112e23 sw ra,28(sp) -80000218: 00812c23 sw s0,24(sp) -8000021c: 02010413 addi s0,sp,32 -80000220: e3dff0ef jal ra,8000005c -80000224: fea42623 sw a0,-20(s0) -80000228: fec42783 lw a5,-20(s0) -8000022c: 0027b793 sltiu a5,a5,2 -80000230: fef405a3 sb a5,-21(s0) -80000234: feb44783 lbu a5,-21(s0) -80000238: 00078513 mv a0,a5 -8000023c: e09ff0ef jal ra,80000044 -80000240: feb44783 lbu a5,-21(s0) -80000244: 06078463 beqz a5,800002ac -80000248: fec42783 lw a5,-20(s0) -8000024c: 0017b793 seqz a5,a5 -80000250: fef40523 sb a5,-22(s0) -80000254: fea44783 lbu a5,-22(s0) -80000258: 00078513 mv a0,a5 -8000025c: de9ff0ef jal ra,80000044 -80000260: fea44783 lbu a5,-22(s0) -80000264: 02078263 beqz a5,80000288 -80000268: 810007b7 lui a5,0x81000 -8000026c: fec42703 lw a4,-20(s0) -80000270: 00271713 slli a4,a4,0x2 -80000274: 12c78793 addi a5,a5,300 # 8100012c -80000278: 00f707b3 add a5,a4,a5 -8000027c: 00a00713 li a4,10 -80000280: 00e7a023 sw a4,0(a5) -80000284: 0200006f j 800002a4 -80000288: 810007b7 lui a5,0x81000 -8000028c: fec42703 lw a4,-20(s0) -80000290: 00271713 slli a4,a4,0x2 -80000294: 12c78793 addi a5,a5,300 # 8100012c -80000298: 00f707b3 add a5,a4,a5 -8000029c: 00b00713 li a4,11 -800002a0: 00e7a023 sw a4,0(a5) -800002a4: da9ff0ef jal ra,8000004c -800002a8: 0640006f j 8000030c -800002ac: fec42783 lw a5,-20(s0) -800002b0: 0037b793 sltiu a5,a5,3 -800002b4: fef404a3 sb a5,-23(s0) -800002b8: fe944783 lbu a5,-23(s0) -800002bc: 00078513 mv a0,a5 -800002c0: d85ff0ef jal ra,80000044 -800002c4: fe944783 lbu a5,-23(s0) -800002c8: 02078263 beqz a5,800002ec -800002cc: 810007b7 lui a5,0x81000 -800002d0: fec42703 lw a4,-20(s0) -800002d4: 00271713 slli a4,a4,0x2 -800002d8: 12c78793 addi a5,a5,300 # 8100012c -800002dc: 00f707b3 add a5,a4,a5 -800002e0: 00c00713 li a4,12 -800002e4: 00e7a023 sw a4,0(a5) -800002e8: 0200006f j 80000308 -800002ec: 810007b7 lui a5,0x81000 -800002f0: fec42703 lw a4,-20(s0) -800002f4: 00271713 slli a4,a4,0x2 -800002f8: 12c78793 addi a5,a5,300 # 8100012c -800002fc: 00f707b3 add a5,a4,a5 -80000300: 00d00713 li a4,13 -80000304: 00e7a023 sw a4,0(a5) -80000308: d45ff0ef jal ra,8000004c -8000030c: d41ff0ef jal ra,8000004c -80000310: 810007b7 lui a5,0x81000 -80000314: 12c7a783 lw a5,300(a5) # 8100012c -80000318: 00078513 mv a0,a5 -8000031c: d85ff0ef jal ra,800000a0 -80000320: 810007b7 lui a5,0x81000 -80000324: 09078513 addi a0,a5,144 # 81000090 -80000328: d3dff0ef jal ra,80000064 -8000032c: 810007b7 lui a5,0x81000 -80000330: 12c78793 addi a5,a5,300 # 8100012c -80000334: 0047a783 lw a5,4(a5) -80000338: 00078513 mv a0,a5 -8000033c: d65ff0ef jal ra,800000a0 -80000340: 810007b7 lui a5,0x81000 -80000344: 09078513 addi a0,a5,144 # 81000090 -80000348: d1dff0ef jal ra,80000064 +8000024c : +8000024c: fe010113 addi sp,sp,-32 +80000250: 00112e23 sw ra,28(sp) +80000254: 00812c23 sw s0,24(sp) +80000258: 02010413 addi s0,sp,32 +8000025c: e3dff0ef jal ra,80000098 +80000260: fea42623 sw a0,-20(s0) +80000264: fec42783 lw a5,-20(s0) +80000268: 0027b793 sltiu a5,a5,2 +8000026c: fef405a3 sb a5,-21(s0) +80000270: feb44783 lbu a5,-21(s0) +80000274: 00078513 mv a0,a5 +80000278: e09ff0ef jal ra,80000080 +8000027c: feb44783 lbu a5,-21(s0) +80000280: 06078463 beqz a5,800002e8 +80000284: fec42783 lw a5,-20(s0) +80000288: 0017b793 seqz a5,a5 +8000028c: fef40523 sb a5,-22(s0) +80000290: fea44783 lbu a5,-22(s0) +80000294: 00078513 mv a0,a5 +80000298: de9ff0ef jal ra,80000080 +8000029c: fea44783 lbu a5,-22(s0) +800002a0: 02078263 beqz a5,800002c4 +800002a4: 810007b7 lui a5,0x81000 +800002a8: fec42703 lw a4,-20(s0) +800002ac: 00271713 slli a4,a4,0x2 +800002b0: 1a878793 addi a5,a5,424 # 810001a8 +800002b4: 00f707b3 add a5,a4,a5 +800002b8: 00a00713 li a4,10 +800002bc: 00e7a023 sw a4,0(a5) +800002c0: 0200006f j 800002e0 +800002c4: 810007b7 lui a5,0x81000 +800002c8: fec42703 lw a4,-20(s0) +800002cc: 00271713 slli a4,a4,0x2 +800002d0: 1a878793 addi a5,a5,424 # 810001a8 +800002d4: 00f707b3 add a5,a4,a5 +800002d8: 00b00713 li a4,11 +800002dc: 00e7a023 sw a4,0(a5) +800002e0: da9ff0ef jal ra,80000088 +800002e4: 0640006f j 80000348 +800002e8: fec42783 lw a5,-20(s0) +800002ec: 0037b793 sltiu a5,a5,3 +800002f0: fef404a3 sb a5,-23(s0) +800002f4: fe944783 lbu a5,-23(s0) +800002f8: 00078513 mv a0,a5 +800002fc: d85ff0ef jal ra,80000080 +80000300: fe944783 lbu a5,-23(s0) +80000304: 02078263 beqz a5,80000328 +80000308: 810007b7 lui a5,0x81000 +8000030c: fec42703 lw a4,-20(s0) +80000310: 00271713 slli a4,a4,0x2 +80000314: 1a878793 addi a5,a5,424 # 810001a8 +80000318: 00f707b3 add a5,a4,a5 +8000031c: 00c00713 li a4,12 +80000320: 00e7a023 sw a4,0(a5) +80000324: 0200006f j 80000344 +80000328: 810007b7 lui a5,0x81000 +8000032c: fec42703 lw a4,-20(s0) +80000330: 00271713 slli a4,a4,0x2 +80000334: 1a878793 addi a5,a5,424 # 810001a8 +80000338: 00f707b3 add a5,a4,a5 +8000033c: 00d00713 li a4,13 +80000340: 00e7a023 sw a4,0(a5) +80000344: d45ff0ef jal ra,80000088 +80000348: d41ff0ef jal ra,80000088 8000034c: 810007b7 lui a5,0x81000 -80000350: 12c78793 addi a5,a5,300 # 8100012c -80000354: 0087a783 lw a5,8(a5) -80000358: 00078513 mv a0,a5 -8000035c: d45ff0ef jal ra,800000a0 -80000360: 810007b7 lui a5,0x81000 -80000364: 09078513 addi a0,a5,144 # 81000090 -80000368: cfdff0ef jal ra,80000064 -8000036c: 810007b7 lui a5,0x81000 -80000370: 12c78793 addi a5,a5,300 # 8100012c -80000374: 00c7a783 lw a5,12(a5) -80000378: 00078513 mv a0,a5 -8000037c: d25ff0ef jal ra,800000a0 -80000380: 810007b7 lui a5,0x81000 -80000384: 09078513 addi a0,a5,144 # 81000090 -80000388: cddff0ef jal ra,80000064 -8000038c: 00000013 nop -80000390: 01c12083 lw ra,28(sp) -80000394: 01812403 lw s0,24(sp) -80000398: 02010113 addi sp,sp,32 -8000039c: 00008067 ret - -800003a0
: -800003a0: ff010113 addi sp,sp,-16 -800003a4: 00112623 sw ra,12(sp) -800003a8: 00812423 sw s0,8(sp) -800003ac: 01010413 addi s0,sp,16 -800003b0: 00100513 li a0,1 -800003b4: c81ff0ef jal ra,80000034 -800003b8: d79ff0ef jal ra,80000130 +80000350: 1a87a783 lw a5,424(a5) # 810001a8 +80000354: 00078513 mv a0,a5 +80000358: d85ff0ef jal ra,800000dc +8000035c: 810007b7 lui a5,0x81000 +80000360: 09078513 addi a0,a5,144 # 81000090 +80000364: d3dff0ef jal ra,800000a0 +80000368: 810007b7 lui a5,0x81000 +8000036c: 1a878793 addi a5,a5,424 # 810001a8 +80000370: 0047a783 lw a5,4(a5) +80000374: 00078513 mv a0,a5 +80000378: d65ff0ef jal ra,800000dc +8000037c: 810007b7 lui a5,0x81000 +80000380: 09078513 addi a0,a5,144 # 81000090 +80000384: d1dff0ef jal ra,800000a0 +80000388: 810007b7 lui a5,0x81000 +8000038c: 1a878793 addi a5,a5,424 # 810001a8 +80000390: 0087a783 lw a5,8(a5) +80000394: 00078513 mv a0,a5 +80000398: d45ff0ef jal ra,800000dc +8000039c: 810007b7 lui a5,0x81000 +800003a0: 09078513 addi a0,a5,144 # 81000090 +800003a4: cfdff0ef jal ra,800000a0 +800003a8: 810007b7 lui a5,0x81000 +800003ac: 1a878793 addi a5,a5,424 # 810001a8 +800003b0: 00c7a783 lw a5,12(a5) +800003b4: 00078513 mv a0,a5 +800003b8: d25ff0ef jal ra,800000dc 800003bc: 810007b7 lui a5,0x81000 -800003c0: 09478513 addi a0,a5,148 # 81000094 -800003c4: ca1ff0ef jal ra,80000064 -800003c8: 00400513 li a0,4 -800003cc: c69ff0ef jal ra,80000034 -800003d0: e41ff0ef jal ra,80000210 -800003d4: 00100513 li a0,1 -800003d8: c5dff0ef jal ra,80000034 -800003dc: 00000793 li a5,0 -800003e0: 00078513 mv a0,a5 -800003e4: 00c12083 lw ra,12(sp) -800003e8: 00812403 lw s0,8(sp) -800003ec: 01010113 addi sp,sp,16 -800003f0: 00008067 ret +800003c0: 09078513 addi a0,a5,144 # 81000090 +800003c4: cddff0ef jal ra,800000a0 +800003c8: 00000013 nop +800003cc: 01c12083 lw ra,28(sp) +800003d0: 01812403 lw s0,24(sp) +800003d4: 02010113 addi sp,sp,32 +800003d8: 00008067 ret + +800003dc : +800003dc: fe010113 addi sp,sp,-32 +800003e0: 00112e23 sw ra,28(sp) +800003e4: 00812c23 sw s0,24(sp) +800003e8: 02010413 addi s0,sp,32 +800003ec: ca5ff0ef jal ra,80000090 +800003f0: fea42623 sw a0,-20(s0) +800003f4: 810007b7 lui a5,0x81000 +800003f8: fec42703 lw a4,-20(s0) +800003fc: 00271713 slli a4,a4,0x2 +80000400: 1b878793 addi a5,a5,440 # 810001b8 +80000404: 00f707b3 add a5,a4,a5 +80000408: fec42703 lw a4,-20(s0) +8000040c: 00e7a023 sw a4,0(a5) +80000410: fec42783 lw a5,-20(s0) +80000414: 00078663 beqz a5,80000420 +80000418: 00000513 li a0,0 +8000041c: c55ff0ef jal ra,80000070 +80000420: 00000013 nop +80000424: 01c12083 lw ra,28(sp) +80000428: 01812403 lw s0,24(sp) +8000042c: 02010113 addi sp,sp,32 +80000430: 00008067 ret + +80000434 : +80000434: fe010113 addi sp,sp,-32 +80000438: 00112e23 sw ra,28(sp) +8000043c: 00812c23 sw s0,24(sp) +80000440: 02010413 addi s0,sp,32 +80000444: 800007b7 lui a5,0x80000 +80000448: 3dc78793 addi a5,a5,988 # 800003dc +8000044c: fef42623 sw a5,-20(s0) +80000450: fec42583 lw a1,-20(s0) +80000454: 00400513 li a0,4 +80000458: c11ff0ef jal ra,80000068 +8000045c: f81ff0ef jal ra,800003dc +80000460: 810007b7 lui a5,0x81000 +80000464: 1b87a783 lw a5,440(a5) # 810001b8 +80000468: 00078513 mv a0,a5 +8000046c: c71ff0ef jal ra,800000dc +80000470: 810007b7 lui a5,0x81000 +80000474: 09078513 addi a0,a5,144 # 81000090 +80000478: c29ff0ef jal ra,800000a0 +8000047c: 810007b7 lui a5,0x81000 +80000480: 1b878793 addi a5,a5,440 # 810001b8 +80000484: 0047a783 lw a5,4(a5) +80000488: 00078513 mv a0,a5 +8000048c: c51ff0ef jal ra,800000dc +80000490: 810007b7 lui a5,0x81000 +80000494: 09078513 addi a0,a5,144 # 81000090 +80000498: c09ff0ef jal ra,800000a0 +8000049c: 810007b7 lui a5,0x81000 +800004a0: 1b878793 addi a5,a5,440 # 810001b8 +800004a4: 0087a783 lw a5,8(a5) +800004a8: 00078513 mv a0,a5 +800004ac: c31ff0ef jal ra,800000dc +800004b0: 810007b7 lui a5,0x81000 +800004b4: 09078513 addi a0,a5,144 # 81000090 +800004b8: be9ff0ef jal ra,800000a0 +800004bc: 810007b7 lui a5,0x81000 +800004c0: 1b878793 addi a5,a5,440 # 810001b8 +800004c4: 00c7a783 lw a5,12(a5) +800004c8: 00078513 mv a0,a5 +800004cc: c11ff0ef jal ra,800000dc +800004d0: 810007b7 lui a5,0x81000 +800004d4: 09078513 addi a0,a5,144 # 81000090 +800004d8: bc9ff0ef jal ra,800000a0 +800004dc: 00000013 nop +800004e0: 01c12083 lw ra,28(sp) +800004e4: 01812403 lw s0,24(sp) +800004e8: 02010113 addi sp,sp,32 +800004ec: 00008067 ret + +800004f0
: +800004f0: ff010113 addi sp,sp,-16 +800004f4: 00112623 sw ra,12(sp) +800004f8: 00812423 sw s0,8(sp) +800004fc: 01010413 addi s0,sp,16 +80000500: 00100513 li a0,1 +80000504: b6dff0ef jal ra,80000070 +80000508: c65ff0ef jal ra,8000016c +8000050c: 810007b7 lui a5,0x81000 +80000510: 0d478513 addi a0,a5,212 # 810000d4 +80000514: b8dff0ef jal ra,800000a0 +80000518: 00400513 li a0,4 +8000051c: b55ff0ef jal ra,80000070 +80000520: d2dff0ef jal ra,8000024c +80000524: 00100513 li a0,1 +80000528: b49ff0ef jal ra,80000070 +8000052c: 00000793 li a5,0 +80000530: 00078513 mv a0,a5 +80000534: 00c12083 lw ra,12(sp) +80000538: 00812403 lw s0,8(sp) +8000053c: 01010113 addi sp,sp,16 +80000540: 00008067 ret Disassembly of section .rodata: @@ -316,7 +408,7 @@ Disassembly of section .rodata: 8100002a: 0000 unimp 8100002c: 0062 c.slli zero,0x18 8100002e: 0000 unimp -81000030: 00000063 beqz zero,81000030 +81000030: 00000063 beqz zero,81000030 81000034: 0064 addi s1,sp,12 81000036: 0000 unimp 81000038: 0065 c.nop 25 @@ -347,7 +439,7 @@ Disassembly of section .rodata: 8100006e: 0000 unimp 81000070: 0062 c.slli zero,0x18 81000072: 0000 unimp -81000074: 00000063 beqz zero,81000074 +81000074: 00000063 beqz zero,81000074 81000078: 0064 addi s1,sp,12 8100007a: 0000 unimp 8100007c: 0065 c.nop 25 @@ -361,90 +453,153 @@ Disassembly of section .rodata: 8100008e: 0000 unimp 81000090: 000a c.slli zero,0x2 81000092: 0000 unimp -81000094: 6e32 flw ft8,12(sp) -81000096: 7765 lui a4,0xffff9 -81000098: 7420 flw fs0,104(s0) -8100009a: 7365 lui t1,0xffff9 -8100009c: 5f74 lw a3,124(a4) -8100009e: 6964 flw fs1,84(a0) -810000a0: 6576 flw fa0,92(sp) -810000a2: 6772 flw fa4,28(sp) -810000a4: 6e65 lui t3,0x19 -810000a6: 000a6563 bltu s4,zero,810000b0 +81000094: 0030 addi a2,sp,8 +81000096: 0000 unimp +81000098: 0031 c.nop 12 +8100009a: 0000 unimp +8100009c: 0032 c.slli zero,0xc +8100009e: 0000 unimp +810000a0: 00000033 add zero,zero,zero +810000a4: 0034 addi a3,sp,8 +810000a6: 0000 unimp +810000a8: 0035 c.nop 13 +810000aa: 0000 unimp +810000ac: 0036 c.slli zero,0xd +810000ae: 0000 unimp +810000b0: 00000037 lui zero,0x0 +810000b4: 0038 addi a4,sp,8 +810000b6: 0000 unimp +810000b8: 0039 c.nop 14 +810000ba: 0000 unimp +810000bc: 0061 c.nop 24 +810000be: 0000 unimp +810000c0: 0062 c.slli zero,0x18 +810000c2: 0000 unimp +810000c4: 00000063 beqz zero,810000c4 +810000c8: 0064 addi s1,sp,12 +810000ca: 0000 unimp +810000cc: 0065 c.nop 25 +810000ce: 0000 unimp +810000d0: 0066 c.slli zero,0x19 +810000d2: 0000 unimp +810000d4: 6574 flw fa3,76(a0) +810000d6: 645f7473 csrrci s0,0x645,30 +810000da: 7669 lui a2,0xffffa +810000dc: 7265 lui tp,0xffff9 +810000de: 636e6567 0x636e6567 +810000e2: 0a65 addi s4,s4,25 + ... Disassembly of section .data: -810000ac : -810000ac: 0000 unimp -810000ae: 8100 0x8100 -810000b0: 0004 0x4 -810000b2: 8100 0x8100 -810000b4: 0008 0x8 -810000b6: 8100 0x8100 -810000b8: 000c 0xc -810000ba: 8100 0x8100 -810000bc: 0010 0x10 -810000be: 8100 0x8100 -810000c0: 0014 0x14 -810000c2: 8100 0x8100 -810000c4: 0018 0x18 -810000c6: 8100 0x8100 -810000c8: 001c 0x1c -810000ca: 8100 0x8100 -810000cc: 0020 addi s0,sp,8 -810000ce: 8100 0x8100 -810000d0: 0024 addi s1,sp,8 -810000d2: 8100 0x8100 -810000d4: 0028 addi a0,sp,8 -810000d6: 8100 0x8100 -810000d8: 002c addi a1,sp,8 -810000da: 8100 0x8100 -810000dc: 0030 addi a2,sp,8 -810000de: 8100 0x8100 -810000e0: 0034 addi a3,sp,8 -810000e2: 8100 0x8100 -810000e4: 0038 addi a4,sp,8 -810000e6: 8100 0x8100 -810000e8: 003c addi a5,sp,8 +810000e8 : +810000e8: 0000 unimp 810000ea: 8100 0x8100 - -810000ec : -810000ec: 0044 addi s1,sp,4 +810000ec: 0004 0x4 810000ee: 8100 0x8100 -810000f0: 0048 addi a0,sp,4 +810000f0: 0008 0x8 810000f2: 8100 0x8100 -810000f4: 004c addi a1,sp,4 +810000f4: 000c 0xc 810000f6: 8100 0x8100 -810000f8: 0050 addi a2,sp,4 +810000f8: 0010 0x10 810000fa: 8100 0x8100 -810000fc: 0054 addi a3,sp,4 +810000fc: 0014 0x14 810000fe: 8100 0x8100 -81000100: 0058 addi a4,sp,4 +81000100: 0018 0x18 81000102: 8100 0x8100 -81000104: 005c addi a5,sp,4 +81000104: 001c 0x1c 81000106: 8100 0x8100 -81000108: 0060 addi s0,sp,12 +81000108: 0020 addi s0,sp,8 8100010a: 8100 0x8100 -8100010c: 0064 addi s1,sp,12 +8100010c: 0024 addi s1,sp,8 8100010e: 8100 0x8100 -81000110: 0068 addi a0,sp,12 +81000110: 0028 addi a0,sp,8 81000112: 8100 0x8100 -81000114: 006c addi a1,sp,12 +81000114: 002c addi a1,sp,8 81000116: 8100 0x8100 -81000118: 0070 addi a2,sp,12 +81000118: 0030 addi a2,sp,8 8100011a: 8100 0x8100 -8100011c: 0074 addi a3,sp,12 +8100011c: 0034 addi a3,sp,8 8100011e: 8100 0x8100 -81000120: 0078 addi a4,sp,12 +81000120: 0038 addi a4,sp,8 81000122: 8100 0x8100 -81000124: 007c addi a5,sp,12 +81000124: 003c addi a5,sp,8 81000126: 8100 0x8100 -81000128: 0080 addi s0,sp,64 + +81000128 : +81000128: 0044 addi s1,sp,4 8100012a: 8100 0x8100 +8100012c: 0048 addi a0,sp,4 +8100012e: 8100 0x8100 +81000130: 004c addi a1,sp,4 +81000132: 8100 0x8100 +81000134: 0050 addi a2,sp,4 +81000136: 8100 0x8100 +81000138: 0054 addi a3,sp,4 +8100013a: 8100 0x8100 +8100013c: 0058 addi a4,sp,4 +8100013e: 8100 0x8100 +81000140: 005c addi a5,sp,4 +81000142: 8100 0x8100 +81000144: 0060 addi s0,sp,12 +81000146: 8100 0x8100 +81000148: 0064 addi s1,sp,12 +8100014a: 8100 0x8100 +8100014c: 0068 addi a0,sp,12 +8100014e: 8100 0x8100 +81000150: 006c addi a1,sp,12 +81000152: 8100 0x8100 +81000154: 0070 addi a2,sp,12 +81000156: 8100 0x8100 +81000158: 0074 addi a3,sp,12 +8100015a: 8100 0x8100 +8100015c: 0078 addi a4,sp,12 +8100015e: 8100 0x8100 +81000160: 007c addi a5,sp,12 +81000162: 8100 0x8100 +81000164: 0080 addi s0,sp,64 +81000166: 8100 0x8100 + +81000168 : +81000168: 0094 addi a3,sp,64 +8100016a: 8100 0x8100 +8100016c: 0098 addi a4,sp,64 +8100016e: 8100 0x8100 +81000170: 009c addi a5,sp,64 +81000172: 8100 0x8100 +81000174: 00a0 addi s0,sp,72 +81000176: 8100 0x8100 +81000178: 00a4 addi s1,sp,72 +8100017a: 8100 0x8100 +8100017c: 00a8 addi a0,sp,72 +8100017e: 8100 0x8100 +81000180: 00ac addi a1,sp,72 +81000182: 8100 0x8100 +81000184: 00b0 addi a2,sp,72 +81000186: 8100 0x8100 +81000188: 00b4 addi a3,sp,72 +8100018a: 8100 0x8100 +8100018c: 00b8 addi a4,sp,72 +8100018e: 8100 0x8100 +81000190: 00bc addi a5,sp,72 +81000192: 8100 0x8100 +81000194: 00c0 addi s0,sp,68 +81000196: 8100 0x8100 +81000198: 00c4 addi s1,sp,68 +8100019a: 8100 0x8100 +8100019c: 00c8 addi a0,sp,68 +8100019e: 8100 0x8100 +810001a0: 00cc addi a1,sp,68 +810001a2: 8100 0x8100 +810001a4: 00d0 addi a2,sp,68 +810001a6: 8100 0x8100 Disassembly of section .bss: -8100012c : +810001a8 : + ... + +810001b8 : ... Disassembly of section .comment: diff --git a/runtime/vortex_runtime.elf b/runtime/vortex_runtime.elf index 3e9e39fa..d92ccd76 100644 Binary files a/runtime/vortex_runtime.elf and b/runtime/vortex_runtime.elf differ diff --git a/runtime/vortex_runtime.hex b/runtime/vortex_runtime.hex index 08d4bf9f..d3287642 100644 --- a/runtime/vortex_runtime.hex +++ b/runtime/vortex_runtime.hex @@ -1,68 +1,89 @@ :0200000480007A -:10000000130540006B000500F32500029395A50041 -:1000100037F1FF6F3301B140130540006B0005005D -:10002000EF000038130500006B0005006B10B500F1 -:10003000678000006B000500678000006B40B50022 -:10004000678000006B200500678000006B300000B7 -:10005000678000007325100267800000732500028E -:1000600067800000130141FF232011002322B1000B -:100070008345050063880500EF00C00113051500E6 -:100080006FF01FFF83200100832541001301C10091 -:1000900067800000B702010023A0B2006780000063 -:1000A000130101FE232E1100232C810013040102F1 -:1000B0002326A4FEB70700810327C4FE13172700D9 -:1000C0009387C70AB307F70083A7070013850700C4 -:1000D000EFF05FF9130000008320C10103248101C8 -:1000E0001301010267800000130101FE232E11009D -:1000F000232C8100130401022326A4FE2324B4FE32 -:100100000325C4FEEFF01FF6032584FEEFF05FF930 -:10011000B707008113850704EFF0DFF41300000038 -:100120008320C101032481011301010267800000C3 -:10013000130101FE232E1100232C81001304010260 -:10014000B707008113854708EFF0DFF11305400082 -:10015000EFF05FEEEFF09FF02326A4FE0327C4FE2E -:10016000B70700818326C4FE939626009387C712A3 -:10017000B387F60023A0E70013051000EFF09FEB14 -:10018000B707008183A7C71213850700EFF05FF15F -:10019000B707008113850709EFF0DFECB70700818F -:1001A0009387C71283A7470013850700EFF05FEF1F -:1001B000B707008113850709EFF0DFEAB707008171 -:1001C0009387C71283A7870013850700EFF05FEDC1 -:1001D000B707008113850709EFF0DFE8B707008153 -:1001E0009387C71283A7C70013850700EFF05FEB63 -:1001F000B707008113850709EFF0DFE61300000061 -:100200008320C101032481011301010267800000E2 -:10021000130101FE232E1100232C8100130401027F -:10022000EFF0DFE32326A4FE8327C4FE93B7270065 -:10023000A305F4FE8347B4FE13850700EFF09FE0AB -:100240008347B4FE638407068327C4FE93B7170071 -:100250002305F4FE8347A4FE13850700EFF09FDE1D -:100260008347A4FE63820702B70700810327C4FE09 -:10027000131727009387C712B307F7001307A000CF -:1002800023A0E7006F000002B70700810327C4FE28 -:10029000131727009387C712B307F7001307B0009F -:1002A00023A0E700EFF09FDA6F0040068327C4FE2B -:1002B00093B73700A304F4FE834794FE1385070029 -:1002C000EFF05FD8834794FE63820702B70700818F -:1002D0000327C4FE131727009387C712B307F7003D -:1002E0001307C00023A0E7006F000002B7070081DA -:1002F0000327C4FE131727009387C712B307F7001D -:100300001307D00023A0E700EFF05FD4EFF01FD475 -:10031000B707008183A7C71213850700EFF05FD8E6 -:10032000B707008113850709EFF0DFD3B707008116 -:100330009387C71283A7470013850700EFF05FD6A6 -:10034000B707008113850709EFF0DFD1B7070081F8 -:100350009387C71283A7870013850700EFF05FD448 -:10036000B707008113850709EFF0DFCFB7070081DA -:100370009387C71283A7C70013850700EFF05FD2EA -:10038000B707008113850709EFF0DFCD13000000E8 -:100390008320C10103248101130101026780000051 -:1003A000130101FF232611002324810013040101FE -:1003B00013051000EFF01FC8EFF09FD7B7070081BB -:1003C00013854709EFF01FCA13054000EFF09FC6E1 -:1003D000EFF01FE413051000EFF0DFC593070000F6 -:1003E000138507008320C10003248100130101014C -:0403F0006780000022 +:100000009705000093850502130580006B10B5006D +:10001000EF000001EF00C04D130500006B0005006C +:10002000130540006B000500F32610029396F600BE +:10003000732600029315A6001316260037F1FF6FF2 +:100040003301B1403301D1403301C100F326100226 +:1000500063860600130500006B0005001305100001 +:100060006B000500678000006B10B5006780000022 +:100070006B000500678000006B40B50067800000E2 +:100080006B200500678000006B3000006780000077 +:10009000732510026780000073250002678000004E +:1000A000130141FF232011002322B10083450500E5 +:1000B00063880500EF00C001130515006FF01FFFF6 +:1000C00083200100832541001301C10067800000E7 +:1000D000B702010023A0B20067800000130101FEF7 +:1000E000232E1100232C8100130401022326A4FED9 +:1000F000B70700810327C4FE131727009387870ED5 +:10010000B307F70083A7070013850700EFF05FF937 +:10011000130000008320C1010324810113010102A7 +:1001200067800000130101FE232E1100232C8100A3 +:10013000130401022326A4FE2324B4FE0325C4FED7 +:10014000EFF01FF6032584FEEFF05FF9B70700819B +:1001500013850704EFF0DFF4130000008320C101D2 +:10016000032481011301010267800000130101FED5 +:10017000232E1100232C810013040102B7070081F4 +:1001800013854708EFF0DFF113054000EFF05FEE55 +:10019000EFF09FF02326A4FE0327C4FEB7070081DB +:1001A0008326C4FE939626009387871AB387F600AA +:1001B00023A0E70013051000EFF09FEBB7070081C5 +:1001C00083A7871A13850700EFF05FF1B707008157 +:1001D00013850709EFF0DFECB70700819387871AD3 +:1001E00083A7470013850700EFF05FEFB707008193 +:1001F00013850709EFF0DFEAB70700819387871AB5 +:1002000083A7870013850700EFF05FEDB707008134 +:1002100013850709EFF0DFE8B70700819387871A96 +:1002200083A7C70013850700EFF05FEBB7070081D6 +:1002300013850709EFF0DFE6130000008320C101FA +:10024000032481011301010267800000130101FEF4 +:10025000232E1100232C810013040102EFF0DFE3B1 +:100260002326A4FE8327C4FE93B72700A305F4FE2C +:100270008347B4FE13850700EFF09FE08347B4FE89 +:10028000638407068327C4FE93B717002305F4FE93 +:100290008347A4FE13850700EFF09FDE8347A4FE8B +:1002A00063820702B70700810327C4FE13172700E4 +:1002B0009387871AB307F7001307A00023A0E7006E +:1002C0006F000002B70700810327C4FE1317270041 +:1002D0009387871AB307F7001307B00023A0E7003E +:1002E000EFF09FDA6F0040068327C4FE93B7370014 +:1002F000A304F4FE834794FE13850700EFF05FD854 +:10030000834794FE63820702B70700810327C4FE78 +:10031000131727009387871AB307F7001307C00046 +:1003200023A0E7006F000002B70700810327C4FE87 +:10033000131727009387871AB307F7001307D00016 +:1003400023A0E700EFF05FD4EFF01FD4B7070081E0 +:1003500083A7871A13850700EFF05FD8B7070081DE +:1003600013850709EFF0DFD3B70700819387871A5A +:1003700083A7470013850700EFF05FD6B70700811A +:1003800013850709EFF0DFD1B70700819387871A3C +:1003900083A7870013850700EFF05FD4B7070081BC +:1003A00013850709EFF0DFCFB70700819387871A1E +:1003B00083A7C70013850700EFF05FD2B70700815E +:1003C00013850709EFF0DFCD130000008320C10182 +:1003D000032481011301010267800000130101FE63 +:1003E000232E1100232C810013040102EFF05FCAB9 +:1003F0002326A4FEB70700810327C4FE1317270096 +:100400009387871BB307F7000327C4FE23A0E700E9 +:100410008327C4FE6386070013050000EFF05FC565 +:10042000130000008320C101032481011301010294 +:1004300067800000130101FE232E1100232C810090 +:1004400013040102B70700809387C73D2326F4FEFB +:100450008325C4FE13054000EFF01FC1EFF01FF825 +:10046000B707008183A7871B13850700EFF01FC71D +:10047000B707008113850709EFF09FC2B707008116 +:100480009387871B83A7470013850700EFF01FC5DD +:10049000B707008113850709EFF09FC0B7070081F8 +:1004A0009387871B83A7870013850700EFF01FC37F +:1004B000B707008113850709EFF09FBEB7070081DA +:1004C0009387871B83A7C70013850700EFF01FC121 +:1004D000B707008113850709EFF09FBC13000000E8 +:1004E0008320C10103248101130101026780000000 +:1004F000130101FF232611002324810013040101AD +:1005000013051000EFF0DFB6EFF05FC6B70700810C +:100510001385470DEFF0DFB813054000EFF05FB52E +:10052000EFF0DFD213051000EFF09FB49307000047 +:10053000138507008320C1000324810013010101FA +:0405400067800000D0 :02000004810079 :10000000300000003100000032000000330000002A :10001000340000003500000036000000370000000A @@ -73,15 +94,23 @@ :100060003700000038000000390000006100000087 :1000700062000000630000006400000065000000F2 :1000800066000000746573745F746D630A0000009D -:100090000A000000326E657720746573745F6469CE -:0A00A00076657267656E63650A00FD -:1000AC000000008104000081080000810C00008128 -:1000BC001000008114000081180000811C000081D8 -:1000CC002000008124000081280000812C00008188 -:1000DC003000008134000081380000813C00008138 -:1000EC0044000081480000814C00008150000081D8 -:1000FC0054000081580000815C0000816000008188 -:10010C0064000081680000816C0000817000008137 -:10011C0074000081780000817C00008180000081E7 +:100090000A000000300000003100000032000000C3 +:1000A000330000003400000035000000360000007E +:1000B0003700000038000000390000006100000037 +:1000C00062000000630000006400000065000000A2 +:1000D00066000000746573745F64697665726765B5 +:0500E0006E63650A00DB +:1000E8000000008104000081080000810C000081EC +:1000F8001000008114000081180000811C0000819C +:100108002000008124000081280000812C0000814B +:100118003000008134000081380000813C000081FB +:1001280044000081480000814C000081500000819B +:1001380054000081580000815C000081600000814B +:1001480064000081680000816C00008170000081FB +:1001580074000081780000817C00008180000081AB +:1001680094000081980000819C000081A00000811B +:10017800A4000081A8000081AC000081B0000081CB +:10018800B4000081B8000081BC000081C00000817B +:10019800C4000081C8000081CC000081D00000812B :040000058000000077 :00000001FF diff --git a/runtime/vx_main.c b/runtime/vx_main.c index 90b768e8..6b95032a 100644 --- a/runtime/vx_main.c +++ b/runtime/vx_main.c @@ -1,76 +1,7 @@ #include "intrinsics/vx_intrinsics.h" #include "io/vx_io.h" - -int arr[4]; - - -void test_tmc() -{ - vx_print_str("test_tmc\n"); - - vx_tmc(4); - - 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; -} - -void test_divergence() -{ - unsigned tid = vx_threadID(); // Get TID - - bool b = tid < 2; - __if (b) - { - bool c = tid < 1; - __if (c) - { - arr[tid] = 10; - } - __else - { - arr[tid] = 11; - } - __endif - } - __else - { - bool c = tid < 3; - __if (c) - { - arr[tid] = 12; - } - __else - { - arr[tid] = 13; - } - __endif - } - __endif - - 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"); - -} +#include "tests/tests.h" int main() { @@ -80,11 +11,16 @@ int main() test_tmc(); // Control Divergence Test - vx_print_str("2new test_divergence\n"); + vx_print_str("test_divergence\n"); vx_tmc(4); test_divergence(); vx_tmc(1); + // // Test wspawn + // vx_print_str("test_spawn\n"); + // test_wsapwn(); + + return 0; } \ No newline at end of file