gitextract_ry7k9cpr/ ├── .gitignore ├── LICENSE ├── README.md ├── assets/ │ ├── figure5_mem_util_calculator.xlsx │ ├── figure7_active_tasklet_breakdown.xlsx │ └── figure9_instruction_mix.xlsx ├── golang/ │ ├── README.md │ └── uPIMulator/ │ ├── benchmark/ │ │ ├── BS/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── bs_omp.c │ │ │ │ │ └── timer.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── binary_search.cu │ │ │ │ ├── binary_search.h │ │ │ │ ├── cpu_lib.py │ │ │ │ ├── cu_lib_import.py │ │ │ │ └── run.py │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── CMakeLists.txt │ │ ├── GEMV/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── _BL_10.conf │ │ │ ├── _NR_TASKLETS_10_BL_10.conf │ │ │ ├── _NR_TASKLETS_11_BL_10.conf │ │ │ ├── _NR_TASKLETS_12_BL_10.conf │ │ │ ├── _NR_TASKLETS_13_BL_10.conf │ │ │ ├── _NR_TASKLETS_14_BL_10.conf │ │ │ ├── _NR_TASKLETS_15_BL_10.conf │ │ │ ├── _NR_TASKLETS_16 │ │ │ ├── _NR_TASKLETS_16_BL_10.conf │ │ │ ├── _NR_TASKLETS_17_BL_10.conf │ │ │ ├── _NR_TASKLETS_18_BL_10.conf │ │ │ ├── _NR_TASKLETS_19_BL_10.conf │ │ │ ├── _NR_TASKLETS_1_BL_10.conf │ │ │ ├── _NR_TASKLETS_20_BL_10.conf │ │ │ ├── _NR_TASKLETS_21_BL_10.conf │ │ │ ├── _NR_TASKLETS_22_BL_10.conf │ │ │ ├── _NR_TASKLETS_23_BL_10.conf │ │ │ ├── _NR_TASKLETS_24_BL_10.conf │ │ │ ├── _NR_TASKLETS_2_BL_10.conf │ │ │ ├── _NR_TASKLETS_3_BL_10.conf │ │ │ ├── _NR_TASKLETS_4_BL_10.conf │ │ │ ├── _NR_TASKLETS_5_BL_10.conf │ │ │ ├── _NR_TASKLETS_6_BL_10.conf │ │ │ ├── _NR_TASKLETS_7_BL_10.conf │ │ │ ├── _NR_TASKLETS_8_BL_10.conf │ │ │ ├── _NR_TASKLETS_9_BL_10.conf │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── gemv_openmp.c │ │ │ │ │ └── gemv_utils.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── gemv.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── HST-L/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── input/ │ │ │ │ └── image_VanHateren.iml │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── HST-S/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── input/ │ │ │ │ │ └── image_VanHateren.iml │ │ │ │ ├── kernel.cpp │ │ │ │ ├── kernel.cu │ │ │ │ ├── kernel.h │ │ │ │ ├── main.cpp │ │ │ │ └── support/ │ │ │ │ ├── common.h │ │ │ │ ├── cuda-setup.h │ │ │ │ ├── partitioner.h │ │ │ │ ├── timer.h │ │ │ │ └── verify.h │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── input/ │ │ │ │ └── image_VanHateren.iml │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── MLP/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── _BL_10.conf │ │ │ ├── _NR_TASKLETS_10_BL_10.conf │ │ │ ├── _NR_TASKLETS_11_BL_10.conf │ │ │ ├── _NR_TASKLETS_12_BL_10.conf │ │ │ ├── _NR_TASKLETS_13_BL_10.conf │ │ │ ├── _NR_TASKLETS_14_BL_10.conf │ │ │ ├── _NR_TASKLETS_15_BL_10.conf │ │ │ ├── _NR_TASKLETS_16 │ │ │ ├── _NR_TASKLETS_16_BL_10.conf │ │ │ ├── _NR_TASKLETS_17_BL_10.conf │ │ │ ├── _NR_TASKLETS_18_BL_10.conf │ │ │ ├── _NR_TASKLETS_19_BL_10.conf │ │ │ ├── _NR_TASKLETS_1_BL_10.conf │ │ │ ├── _NR_TASKLETS_20_BL_10.conf │ │ │ ├── _NR_TASKLETS_21_BL_10.conf │ │ │ ├── _NR_TASKLETS_22_BL_10.conf │ │ │ ├── _NR_TASKLETS_23_BL_10.conf │ │ │ ├── _NR_TASKLETS_24_BL_10.conf │ │ │ ├── _NR_TASKLETS_2_BL_10.conf │ │ │ ├── _NR_TASKLETS_3_BL_10.conf │ │ │ ├── _NR_TASKLETS_4_BL_10.conf │ │ │ ├── _NR_TASKLETS_5_BL_10.conf │ │ │ ├── _NR_TASKLETS_6_BL_10.conf │ │ │ ├── _NR_TASKLETS_7_BL_10.conf │ │ │ ├── _NR_TASKLETS_8_BL_10.conf │ │ │ ├── _NR_TASKLETS_9_BL_10.conf │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── mlp_openmp.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── mlp.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── RED/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.cpp │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── app_baseline.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SCAN-RSS/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.cpp │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── app_baseline.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SCAN-SSA/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SEL/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── ds.h │ │ │ │ ├── kernel.cu │ │ │ │ └── select.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── TRNS/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── kernel.cpp │ │ │ │ │ ├── kernel.h │ │ │ │ │ ├── main.cpp │ │ │ │ │ └── support/ │ │ │ │ │ ├── common.h │ │ │ │ │ ├── setup.h │ │ │ │ │ ├── timer.h │ │ │ │ │ └── verify.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── kernel.cu │ │ │ │ ├── kernel.h │ │ │ │ ├── main.cpp │ │ │ │ └── support/ │ │ │ │ ├── common.h │ │ │ │ ├── cuda-setup.h │ │ │ │ ├── timer.h │ │ │ │ └── verify.h │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── TS/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── UNI/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── ds.h │ │ │ │ ├── kernel.cu │ │ │ │ └── unique.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── VA/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── vec_add.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ └── build.py │ ├── docker/ │ │ └── Dockerfile │ ├── go.mod │ ├── go.sum │ ├── script/ │ │ ├── build.py │ │ ├── format.py │ │ ├── run_validation.sh │ │ └── visualize.py │ ├── sdk/ │ │ ├── CMakeLists.txt │ │ ├── build.py │ │ ├── misc/ │ │ │ ├── CMakeLists.txt │ │ │ ├── accessMramFromDpu.c │ │ │ ├── coreDump.c │ │ │ ├── crt0.c │ │ │ ├── dpu.lds │ │ │ ├── internalStateReset.c │ │ │ ├── linkerScript.lds │ │ │ ├── restoreRegisters.c │ │ │ └── restore_carry_and_zero_flag.h │ │ ├── stdlib/ │ │ │ ├── CMakeLists.txt │ │ │ ├── abort.c │ │ │ ├── assert.h │ │ │ ├── atoi.c │ │ │ ├── atol.c │ │ │ ├── ctype.h │ │ │ ├── errno.c │ │ │ ├── errno.h │ │ │ ├── exit.c │ │ │ ├── inttypes.h │ │ │ ├── iso646.h │ │ │ ├── limits.h │ │ │ ├── memchr.c │ │ │ ├── memcmp.c │ │ │ ├── memcpy.c │ │ │ ├── memmove.c │ │ │ ├── memmram_utils.h │ │ │ ├── memset.c │ │ │ ├── stdalign.h │ │ │ ├── stdarg.h │ │ │ ├── stdbool.h │ │ │ ├── stddef.h │ │ │ ├── stdint.h │ │ │ ├── stdio.c │ │ │ ├── stdio.h │ │ │ ├── stdlib.h │ │ │ ├── stdnoreturn.h │ │ │ ├── stpcpy.c │ │ │ ├── stpncpy.c │ │ │ ├── strcat.c │ │ │ ├── strchr.c │ │ │ ├── strcmp.c │ │ │ ├── strcpy.c │ │ │ ├── strcspn.c │ │ │ ├── strdup.c │ │ │ ├── strerror.c │ │ │ ├── string.h │ │ │ ├── strlen.c │ │ │ ├── strlwr.c │ │ │ ├── strncat.c │ │ │ ├── strncmp.c │ │ │ ├── strncpy.c │ │ │ ├── strndup.c │ │ │ ├── strnlen.c │ │ │ ├── strpbrk.c │ │ │ ├── strrchr.c │ │ │ ├── strrev.c │ │ │ ├── strsep.c │ │ │ ├── strspn.c │ │ │ ├── strstr.c │ │ │ ├── strtok_r.c │ │ │ ├── strtol.c │ │ │ └── strupr.c │ │ └── syslib/ │ │ ├── CMakeLists.txt │ │ ├── absvdi2.c │ │ ├── absvsi2.c │ │ ├── adddf3.c │ │ ├── addsf3.c │ │ ├── addvdi3.c │ │ ├── addvsi3.c │ │ ├── alloc.c │ │ ├── alloc.h │ │ ├── ashldi3.c │ │ ├── ashrdi3.c │ │ ├── atomic_bit.h │ │ ├── atomics.c │ │ ├── attributes.h │ │ ├── barrier.c │ │ ├── barrier.h │ │ ├── bswapdi2.c │ │ ├── bswapsi2.c │ │ ├── buddy_alloc.c │ │ ├── buddy_alloc.h │ │ ├── buddy_realloc.c │ │ ├── built_ins.h │ │ ├── clzdi2.c │ │ ├── clzsi2.c │ │ ├── cmpdi2.c │ │ ├── comparedf2.c │ │ ├── comparesf2.c │ │ ├── ctzdi2.c │ │ ├── ctzsi2.c │ │ ├── defs.c │ │ ├── defs.h │ │ ├── devprivate.h │ │ ├── div32.c │ │ ├── divdf3.c │ │ ├── divdi3.c │ │ ├── divmodsi4.c │ │ ├── divsf3.c │ │ ├── divsi3.c │ │ ├── dpuconst.h │ │ ├── dpufault.h │ │ ├── dpuruntime.h │ │ ├── extendhfsf2.c │ │ ├── extendsfdf2.c │ │ ├── ffsdi2.c │ │ ├── ffssi2.c │ │ ├── ffsti2.c │ │ ├── fixdfdi.c │ │ ├── fixdfsi.c │ │ ├── fixsfdi.c │ │ ├── fixsfsi.c │ │ ├── fixunsdfdi.c │ │ ├── fixunsdfsi.c │ │ ├── fixunssfdi.c │ │ ├── fixunssfsi.c │ │ ├── float.h │ │ ├── floatdidf.c │ │ ├── floatdisf.c │ │ ├── floatsidf.c │ │ ├── floatsisf.c │ │ ├── floatundidf.c │ │ ├── floatundisf.c │ │ ├── floatunsidf.c │ │ ├── floatunsisf.c │ │ ├── fp_add_impl.inc │ │ ├── fp_extend.h │ │ ├── fp_extend_impl.inc │ │ ├── fp_fixint_impl.inc │ │ ├── fp_fixuint_impl.inc │ │ ├── fp_lib.h │ │ ├── fp_mul_impl.inc │ │ ├── fp_trunc.h │ │ ├── fp_trunc_impl.inc │ │ ├── fsb_allocator.c │ │ ├── fsb_allocator.h │ │ ├── handshake.c │ │ ├── handshake.h │ │ ├── int_endianness.h │ │ ├── int_lib.h │ │ ├── int_math.h │ │ ├── int_types.h │ │ ├── int_util.c │ │ ├── int_util.h │ │ ├── listener.c │ │ ├── lshrdi3.c │ │ ├── macro_utils.h │ │ ├── mcount.c │ │ ├── moddi3.c │ │ ├── modsi3.c │ │ ├── mram.h │ │ ├── mul32.c │ │ ├── mul64.c │ │ ├── muldc3.c │ │ ├── muldf3.c │ │ ├── mulodi4.c │ │ ├── mulosi4.c │ │ ├── mulsf3.c │ │ ├── mulvdi3.c │ │ ├── mulvsi3.c │ │ ├── mutex.h │ │ ├── negdf2.c │ │ ├── negdi2.c │ │ ├── negsf2.c │ │ ├── negvdi2.c │ │ ├── negvsi2.c │ │ ├── paritydi2.c │ │ ├── paritysi2.c │ │ ├── perfcounter.c │ │ ├── perfcounter.h │ │ ├── popcountdi2.c │ │ ├── popcountsi2.c │ │ ├── powidf2.c │ │ ├── powisf2.c │ │ ├── profiling.c │ │ ├── profiling.h │ │ ├── profiling_internals.h │ │ ├── sem.c │ │ ├── sem.h │ │ ├── seqread.h │ │ ├── seqread.inc │ │ ├── seqread1024.c │ │ ├── seqread128.c │ │ ├── seqread256.c │ │ ├── seqread32.c │ │ ├── seqread512.c │ │ ├── seqread64.c │ │ ├── soft_cache.c │ │ ├── soft_cache.h │ │ ├── subdf3.c │ │ ├── subsf3.c │ │ ├── subvdi3.c │ │ ├── subvsi3.c │ │ ├── sysdef.h │ │ ├── truncdfhf2.c │ │ ├── truncdfsf2.c │ │ ├── truncsfhf2.c │ │ ├── ucmpdi2.c │ │ ├── udiv64.c │ │ ├── udivdi3.c │ │ ├── udivmodsi4.c │ │ ├── udivsi3.c │ │ ├── umoddi3.c │ │ ├── umodsi3.c │ │ └── waitqueue.c │ └── src/ │ ├── abi/ │ │ ├── encoding/ │ │ │ ├── ascii_encoder.go │ │ │ └── byte_stream.go │ │ └── word/ │ │ ├── intermediate.go │ │ └── word.go │ ├── assembler/ │ │ ├── assemblable.go │ │ ├── assembler.go │ │ └── prim/ │ │ ├── bs.go │ │ ├── gemv.go │ │ ├── hst_l.go │ │ ├── hst_s.go │ │ ├── mlp.go │ │ ├── red.go │ │ ├── scan_rss.go │ │ ├── scan_ssa.go │ │ ├── sel.go │ │ ├── trns.go │ │ ├── ts.go │ │ ├── uni.go │ │ └── va.go │ ├── compiler/ │ │ └── compiler.go │ ├── core/ │ │ ├── job.go │ │ └── thread_pool.go │ ├── linker/ │ │ ├── analyze_liveness_job.go │ │ ├── kernel/ │ │ │ ├── directive/ │ │ │ │ ├── ascii_directive.go │ │ │ │ ├── asciz_directive.go │ │ │ │ ├── byte_directive.go │ │ │ │ ├── long_directive.go │ │ │ │ ├── quad_directive.go │ │ │ │ ├── short_directive.go │ │ │ │ └── zero_directive.go │ │ │ ├── encodable.go │ │ │ ├── executable.go │ │ │ ├── instruction/ │ │ │ │ ├── cc/ │ │ │ │ │ ├── acquire_cc.go │ │ │ │ │ ├── add_nz_cc.go │ │ │ │ │ ├── boot_cc.go │ │ │ │ │ ├── cc.go │ │ │ │ │ ├── const_cc_ge0.go │ │ │ │ │ ├── const_cc_geu.go │ │ │ │ │ ├── const_cc_zero.go │ │ │ │ │ ├── count_nz_cc.go │ │ │ │ │ ├── div_cc.go │ │ │ │ │ ├── div_nz_cc.go │ │ │ │ │ ├── ext_sub_set_cc.go │ │ │ │ │ ├── false_cc.go │ │ │ │ │ ├── imm_shift_nz_cc.go │ │ │ │ │ ├── log_nz_cc.go │ │ │ │ │ ├── log_set_cc.go │ │ │ │ │ ├── mul_nz_cc.go │ │ │ │ │ ├── no_cc.go │ │ │ │ │ ├── release_cc.go │ │ │ │ │ ├── shift_nz_cc.go │ │ │ │ │ ├── sub_nz_cc.go │ │ │ │ │ ├── sub_set_cc.go │ │ │ │ │ ├── true_cc.go │ │ │ │ │ └── true_false_cc.go │ │ │ │ ├── endian.go │ │ │ │ ├── exception.go │ │ │ │ ├── flag.go │ │ │ │ ├── instruction.go │ │ │ │ ├── op_code.go │ │ │ │ ├── reg_descriptor/ │ │ │ │ │ ├── gp_reg_descriptor.go │ │ │ │ │ ├── pair_reg_descriptor.go │ │ │ │ │ ├── sp_reg_descriptor.go │ │ │ │ │ └── src_reg_descriptor.go │ │ │ │ └── suffix.go │ │ │ ├── kernel.go │ │ │ ├── label.go │ │ │ ├── liveness.go │ │ │ ├── relocatable.go │ │ │ └── section.go │ │ ├── lex_job.go │ │ ├── lexer/ │ │ │ ├── keyword_factory.go │ │ │ ├── lexer.go │ │ │ ├── regex.go │ │ │ ├── regex_factory.go │ │ │ ├── token.go │ │ │ ├── token_stream.go │ │ │ └── tokenizer.go │ │ ├── linker.go │ │ ├── logic/ │ │ │ ├── instruction_assigner.go │ │ │ ├── label_assigner.go │ │ │ ├── linker_constant.go │ │ │ ├── linker_script.go │ │ │ ├── liveness_analyzer.go │ │ │ └── set_assigner.go │ │ ├── parse_job.go │ │ └── parser/ │ │ ├── ast.go │ │ ├── expr/ │ │ │ ├── binary_add_expr.go │ │ │ ├── binary_sub_expr.go │ │ │ ├── ci_op_code_expr.go │ │ │ ├── condition_expr.go │ │ │ ├── ddci_op_code_expr.go │ │ │ ├── dma_rri_op_code_expr.go │ │ │ ├── drdici_op_code_expr.go │ │ │ ├── endian_expr.go │ │ │ ├── expr.go │ │ │ ├── i_op_code_expr.go │ │ │ ├── jump_op_code_expr.go │ │ │ ├── load_op_code_expr.go │ │ │ ├── negative_number_expr.go │ │ │ ├── primary_expr.go │ │ │ ├── program_counter_expr.go │ │ │ ├── r_op_code_expr.go │ │ │ ├── rici_op_code_expr.go │ │ │ ├── rr_op_code_expr.go │ │ │ ├── rri_op_code_expr.go │ │ │ ├── rrri_op_code_expr.go │ │ │ ├── section_name_expr.go │ │ │ ├── section_type_expr.go │ │ │ ├── src_reg_expr.go │ │ │ ├── store_op_code_expr.go │ │ │ ├── suffix_expr.go │ │ │ └── symbol_type.go │ │ ├── parser.go │ │ ├── rule.go │ │ ├── stack.go │ │ ├── stack_item.go │ │ ├── stmt/ │ │ │ ├── directive/ │ │ │ │ ├── addrsig_stmt.go │ │ │ │ ├── addrsig_sym_stmt.go │ │ │ │ ├── ascii_stmt.go │ │ │ │ ├── asciz_stmt.go │ │ │ │ ├── byte_stmt.go │ │ │ │ ├── cfi_def_cfa_offset_stmt.go │ │ │ │ ├── cfi_endproc.go │ │ │ │ ├── cfi_offset_stmt.go │ │ │ │ ├── cfi_sections_stmt.go │ │ │ │ ├── cfi_startproc_stmt.go │ │ │ │ ├── file_number_stmt.go │ │ │ │ ├── file_string_stmt.go │ │ │ │ ├── global_stmt.go │ │ │ │ ├── loc_is_stmt_stmt.go │ │ │ │ ├── loc_number_stmt.go │ │ │ │ ├── loc_prologue_end_stmt.go │ │ │ │ ├── long_program_counter.go │ │ │ │ ├── long_section_name_stmt.go │ │ │ │ ├── p2_align_stmt.go │ │ │ │ ├── quad_stmt.go │ │ │ │ ├── section_identifier_number_stmt.go │ │ │ │ ├── section_identifier_stmt.go │ │ │ │ ├── section_stack_sizes_stmt.go │ │ │ │ ├── section_string_number_stmt.go │ │ │ │ ├── section_string_stmt.go │ │ │ │ ├── set_stmt.go │ │ │ │ ├── short_stmt.go │ │ │ │ ├── size_stmt.go │ │ │ │ ├── text_stmt.go │ │ │ │ ├── type_stmt.go │ │ │ │ ├── weak_stmt.go │ │ │ │ ├── zero_double_number_stmt.go │ │ │ │ └── zero_single_number_stmt.go │ │ │ ├── instruction/ │ │ │ │ ├── ci_stmt.go │ │ │ │ ├── ddci_stmt.go │ │ │ │ ├── dma_rri_stmt.go │ │ │ │ ├── drdici_stmt.go │ │ │ │ ├── edri_stmt.go │ │ │ │ ├── erid_stmt.go │ │ │ │ ├── erii_stmt.go │ │ │ │ ├── erir_stmt.go │ │ │ │ ├── erri_stmt.go │ │ │ │ ├── i_stmt.go │ │ │ │ ├── nop_stmt.go │ │ │ │ ├── r_stmt.go │ │ │ │ ├── rci_stmt.go │ │ │ │ ├── rici_stmt.go │ │ │ │ ├── rir_stmt.go │ │ │ │ ├── rirc_stmt.go │ │ │ │ ├── rirci_stmt.go │ │ │ │ ├── rr_stmt.go │ │ │ │ ├── rrc_stmt.go │ │ │ │ ├── rrci_stmt.go │ │ │ │ ├── rri_stmt.go │ │ │ │ ├── rric_stmt.go │ │ │ │ ├── rrici_stmt.go │ │ │ │ ├── rrr_stmt.go │ │ │ │ ├── rrrc_stmt.go │ │ │ │ ├── rrrci_stmt.go │ │ │ │ ├── rrri_stmt.go │ │ │ │ ├── rrrici_stmt.go │ │ │ │ ├── s_erri_stmt.go │ │ │ │ ├── s_r_stmt.go │ │ │ │ ├── s_rci_stmt.go │ │ │ │ ├── s_rirc_stmt.go │ │ │ │ ├── s_rirci_stmt.go │ │ │ │ ├── s_rr_stmt.go │ │ │ │ ├── s_rrc_stmt.go │ │ │ │ ├── s_rrci_stmt.go │ │ │ │ ├── s_rri_stmt.go │ │ │ │ ├── s_rric_stmt.go │ │ │ │ ├── s_rrici_stmt.go │ │ │ │ ├── s_rrr_stmt.go │ │ │ │ ├── s_rrrc_stmt.go │ │ │ │ ├── s_rrrci_stmt.go │ │ │ │ ├── s_rrri_stmt.go │ │ │ │ └── s_rrrici_stmt.go │ │ │ ├── label_stmt.go │ │ │ ├── stmt.go │ │ │ └── sugar/ │ │ │ ├── bkp_stmt.go │ │ │ ├── boot_ri_stmt.go │ │ │ ├── call_ri_stmt.go │ │ │ ├── call_rr_stmt.go │ │ │ ├── div_step_drdi_stmt.go │ │ │ ├── jeq_rii_stmt.go │ │ │ ├── jeq_rri_stmt.go │ │ │ ├── jnz_ri_stmt.go │ │ │ ├── jump_i_stmt.go │ │ │ ├── jump_r_stmt.go │ │ │ ├── lbs_rri_stmt.go │ │ │ ├── lbs_s_rri_stmt.go │ │ │ ├── ld_dri_stmt.go │ │ │ ├── movd_dd_stmt.go │ │ │ ├── move_ri_stmt.go │ │ │ ├── move_rici_stmt.go │ │ │ ├── move_s_ri_stmt.go │ │ │ ├── move_s_rici_stmt.go │ │ │ ├── sb_id_ri_stmt.go │ │ │ ├── sb_id_rii_stmt.go │ │ │ ├── sb_rir_stmt.go │ │ │ ├── sd_rid_stmt.go │ │ │ ├── stop_stmt.go │ │ │ └── time_cfg_r_stmt.go │ │ ├── table.go │ │ └── walker.go │ ├── main.go │ ├── misc/ │ │ ├── command_line_option.go │ │ ├── command_line_parser.go │ │ ├── command_line_validator.go │ │ ├── config_loader.go │ │ ├── config_validator.go │ │ ├── file_dumper.go │ │ ├── file_scanner.go │ │ └── stat_factory.go │ └── simulator/ │ ├── channel/ │ │ ├── channel.go │ │ ├── channel_message.go │ │ └── channel_message_q.go │ ├── cycle_job.go │ ├── dpu/ │ │ ├── dpu.go │ │ ├── dram/ │ │ │ ├── dma_command.go │ │ │ ├── dma_command_q.go │ │ │ ├── memory_command.go │ │ │ ├── memory_command_q.go │ │ │ ├── memory_controller.go │ │ │ ├── memory_scheduler.go │ │ │ ├── mram.go │ │ │ ├── row_buffer.go │ │ │ └── wordline.go │ │ ├── logic/ │ │ │ ├── alu.go │ │ │ ├── cycle_rule.go │ │ │ ├── dma.go │ │ │ ├── instruction_q.go │ │ │ ├── logic.go │ │ │ ├── operand_collector.go │ │ │ ├── pipeline.go │ │ │ ├── reg_set.go │ │ │ ├── thread.go │ │ │ ├── thread_q.go │ │ │ └── thread_scheduler.go │ │ ├── reg/ │ │ │ ├── condition_reg.go │ │ │ ├── exception_reg.go │ │ │ ├── flag_reg.go │ │ │ ├── gp_reg.go │ │ │ ├── pc_reg.go │ │ │ ├── reg_file.go │ │ │ └── sp_reg.go │ │ └── sram/ │ │ ├── atomic.go │ │ ├── iram.go │ │ ├── lock.go │ │ └── wram.go │ ├── host/ │ │ ├── channel_transfer_read_job.go │ │ ├── channel_transfer_write_job.go │ │ ├── chunk.go │ │ ├── cycle_job.go │ │ ├── dma_transfer_to_atomic_job.go │ │ ├── dma_transfer_to_iram_job.go │ │ ├── dma_transfer_to_mram_job.go │ │ ├── dma_transfer_to_wram_job.go │ │ └── host.go │ ├── rank/ │ │ └── rank.go │ └── simulator.go ├── golang_vm/ │ ├── README.md │ └── uPIMulator/ │ ├── benchmark/ │ │ ├── BS/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── bs_omp.c │ │ │ │ │ └── timer.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── binary_search.cu │ │ │ │ ├── binary_search.h │ │ │ │ ├── cpu_lib.py │ │ │ │ ├── cu_lib_import.py │ │ │ │ └── run.py │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── CMakeLists.txt │ │ ├── GEMV/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── _BL_10.conf │ │ │ ├── _NR_TASKLETS_10_BL_10.conf │ │ │ ├── _NR_TASKLETS_11_BL_10.conf │ │ │ ├── _NR_TASKLETS_12_BL_10.conf │ │ │ ├── _NR_TASKLETS_13_BL_10.conf │ │ │ ├── _NR_TASKLETS_14_BL_10.conf │ │ │ ├── _NR_TASKLETS_15_BL_10.conf │ │ │ ├── _NR_TASKLETS_16 │ │ │ ├── _NR_TASKLETS_16_BL_10.conf │ │ │ ├── _NR_TASKLETS_17_BL_10.conf │ │ │ ├── _NR_TASKLETS_18_BL_10.conf │ │ │ ├── _NR_TASKLETS_19_BL_10.conf │ │ │ ├── _NR_TASKLETS_1_BL_10.conf │ │ │ ├── _NR_TASKLETS_20_BL_10.conf │ │ │ ├── _NR_TASKLETS_21_BL_10.conf │ │ │ ├── _NR_TASKLETS_22_BL_10.conf │ │ │ ├── _NR_TASKLETS_23_BL_10.conf │ │ │ ├── _NR_TASKLETS_24_BL_10.conf │ │ │ ├── _NR_TASKLETS_2_BL_10.conf │ │ │ ├── _NR_TASKLETS_3_BL_10.conf │ │ │ ├── _NR_TASKLETS_4_BL_10.conf │ │ │ ├── _NR_TASKLETS_5_BL_10.conf │ │ │ ├── _NR_TASKLETS_6_BL_10.conf │ │ │ ├── _NR_TASKLETS_7_BL_10.conf │ │ │ ├── _NR_TASKLETS_8_BL_10.conf │ │ │ ├── _NR_TASKLETS_9_BL_10.conf │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── gemv_openmp.c │ │ │ │ │ └── gemv_utils.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── gemv.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── HST-L/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── input/ │ │ │ │ └── image_VanHateren.iml │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── HST-S/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── input/ │ │ │ │ │ └── image_VanHateren.iml │ │ │ │ ├── kernel.cpp │ │ │ │ ├── kernel.cu │ │ │ │ ├── kernel.h │ │ │ │ ├── main.cpp │ │ │ │ └── support/ │ │ │ │ ├── common.h │ │ │ │ ├── cuda-setup.h │ │ │ │ ├── partitioner.h │ │ │ │ ├── timer.h │ │ │ │ └── verify.h │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── input/ │ │ │ │ └── image_VanHateren.iml │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── MLP/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── _BL_10.conf │ │ │ ├── _NR_TASKLETS_10_BL_10.conf │ │ │ ├── _NR_TASKLETS_11_BL_10.conf │ │ │ ├── _NR_TASKLETS_12_BL_10.conf │ │ │ ├── _NR_TASKLETS_13_BL_10.conf │ │ │ ├── _NR_TASKLETS_14_BL_10.conf │ │ │ ├── _NR_TASKLETS_15_BL_10.conf │ │ │ ├── _NR_TASKLETS_16 │ │ │ ├── _NR_TASKLETS_16_BL_10.conf │ │ │ ├── _NR_TASKLETS_17_BL_10.conf │ │ │ ├── _NR_TASKLETS_18_BL_10.conf │ │ │ ├── _NR_TASKLETS_19_BL_10.conf │ │ │ ├── _NR_TASKLETS_1_BL_10.conf │ │ │ ├── _NR_TASKLETS_20_BL_10.conf │ │ │ ├── _NR_TASKLETS_21_BL_10.conf │ │ │ ├── _NR_TASKLETS_22_BL_10.conf │ │ │ ├── _NR_TASKLETS_23_BL_10.conf │ │ │ ├── _NR_TASKLETS_24_BL_10.conf │ │ │ ├── _NR_TASKLETS_2_BL_10.conf │ │ │ ├── _NR_TASKLETS_3_BL_10.conf │ │ │ ├── _NR_TASKLETS_4_BL_10.conf │ │ │ ├── _NR_TASKLETS_5_BL_10.conf │ │ │ ├── _NR_TASKLETS_6_BL_10.conf │ │ │ ├── _NR_TASKLETS_7_BL_10.conf │ │ │ ├── _NR_TASKLETS_8_BL_10.conf │ │ │ ├── _NR_TASKLETS_9_BL_10.conf │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── mlp_openmp.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── mlp.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── RED/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.cpp │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── app_baseline.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SCAN-RSS/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.cpp │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── app_baseline.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SCAN-SSA/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SEL/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── ds.h │ │ │ │ ├── kernel.cu │ │ │ │ └── select.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── TRNS/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── kernel.cpp │ │ │ │ │ ├── kernel.h │ │ │ │ │ ├── main.cpp │ │ │ │ │ └── support/ │ │ │ │ │ ├── common.h │ │ │ │ │ ├── setup.h │ │ │ │ │ ├── timer.h │ │ │ │ │ └── verify.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── kernel.cu │ │ │ │ ├── kernel.h │ │ │ │ ├── main.cpp │ │ │ │ └── support/ │ │ │ │ ├── common.h │ │ │ │ ├── cuda-setup.h │ │ │ │ ├── timer.h │ │ │ │ └── verify.h │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── TS/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── UNI/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── ds.h │ │ │ │ ├── kernel.cu │ │ │ │ └── unique.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── VA/ │ │ │ ├── CMakeLists.txt │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── vec_add.cu │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── VA_SIMPLE/ │ │ │ ├── CMakeLists.txt │ │ │ ├── dpu/ │ │ │ │ ├── CMakeLists.txt │ │ │ │ └── task.c │ │ │ └── host/ │ │ │ ├── CMakeLists.txt │ │ │ └── app.c │ │ └── build.py │ ├── docker/ │ │ └── Dockerfile │ ├── go.mod │ ├── script/ │ │ ├── build.py │ │ └── format.py │ ├── sdk/ │ │ ├── CMakeLists.txt │ │ ├── build.py │ │ ├── misc/ │ │ │ ├── CMakeLists.txt │ │ │ ├── accessMramFromDpu.c │ │ │ ├── coreDump.c │ │ │ ├── crt0.c │ │ │ ├── dpu.lds │ │ │ ├── internalStateReset.c │ │ │ ├── linkerScript.lds │ │ │ ├── restoreRegisters.c │ │ │ └── restore_carry_and_zero_flag.h │ │ ├── stdlib/ │ │ │ ├── CMakeLists.txt │ │ │ ├── abort.c │ │ │ ├── assert.h │ │ │ ├── atoi.c │ │ │ ├── atol.c │ │ │ ├── ctype.h │ │ │ ├── errno.c │ │ │ ├── errno.h │ │ │ ├── exit.c │ │ │ ├── inttypes.h │ │ │ ├── iso646.h │ │ │ ├── limits.h │ │ │ ├── memchr.c │ │ │ ├── memcmp.c │ │ │ ├── memcpy.c │ │ │ ├── memmove.c │ │ │ ├── memmram_utils.h │ │ │ ├── memset.c │ │ │ ├── stdalign.h │ │ │ ├── stdarg.h │ │ │ ├── stdbool.h │ │ │ ├── stddef.h │ │ │ ├── stdint.h │ │ │ ├── stdio.c │ │ │ ├── stdio.h │ │ │ ├── stdlib.h │ │ │ ├── stdnoreturn.h │ │ │ ├── stpcpy.c │ │ │ ├── stpncpy.c │ │ │ ├── strcat.c │ │ │ ├── strchr.c │ │ │ ├── strcmp.c │ │ │ ├── strcpy.c │ │ │ ├── strcspn.c │ │ │ ├── strdup.c │ │ │ ├── strerror.c │ │ │ ├── string.h │ │ │ ├── strlen.c │ │ │ ├── strlwr.c │ │ │ ├── strncat.c │ │ │ ├── strncmp.c │ │ │ ├── strncpy.c │ │ │ ├── strndup.c │ │ │ ├── strnlen.c │ │ │ ├── strpbrk.c │ │ │ ├── strrchr.c │ │ │ ├── strrev.c │ │ │ ├── strsep.c │ │ │ ├── strspn.c │ │ │ ├── strstr.c │ │ │ ├── strtok_r.c │ │ │ ├── strtol.c │ │ │ └── strupr.c │ │ └── syslib/ │ │ ├── CMakeLists.txt │ │ ├── absvdi2.c │ │ ├── absvsi2.c │ │ ├── adddf3.c │ │ ├── addsf3.c │ │ ├── addvdi3.c │ │ ├── addvsi3.c │ │ ├── alloc.c │ │ ├── alloc.h │ │ ├── ashldi3.c │ │ ├── ashrdi3.c │ │ ├── atomic_bit.h │ │ ├── atomics.c │ │ ├── attributes.h │ │ ├── barrier.c │ │ ├── barrier.h │ │ ├── bswapdi2.c │ │ ├── bswapsi2.c │ │ ├── buddy_alloc.c │ │ ├── buddy_alloc.h │ │ ├── buddy_realloc.c │ │ ├── built_ins.h │ │ ├── clzdi2.c │ │ ├── clzsi2.c │ │ ├── cmpdi2.c │ │ ├── comparedf2.c │ │ ├── comparesf2.c │ │ ├── ctzdi2.c │ │ ├── ctzsi2.c │ │ ├── defs.c │ │ ├── defs.h │ │ ├── devprivate.h │ │ ├── div32.c │ │ ├── divdf3.c │ │ ├── divdi3.c │ │ ├── divmodsi4.c │ │ ├── divsf3.c │ │ ├── divsi3.c │ │ ├── dpuconst.h │ │ ├── dpufault.h │ │ ├── dpuruntime.h │ │ ├── extendhfsf2.c │ │ ├── extendsfdf2.c │ │ ├── ffsdi2.c │ │ ├── ffssi2.c │ │ ├── ffsti2.c │ │ ├── fixdfdi.c │ │ ├── fixdfsi.c │ │ ├── fixsfdi.c │ │ ├── fixsfsi.c │ │ ├── fixunsdfdi.c │ │ ├── fixunsdfsi.c │ │ ├── fixunssfdi.c │ │ ├── fixunssfsi.c │ │ ├── float.h │ │ ├── floatdidf.c │ │ ├── floatdisf.c │ │ ├── floatsidf.c │ │ ├── floatsisf.c │ │ ├── floatundidf.c │ │ ├── floatundisf.c │ │ ├── floatunsidf.c │ │ ├── floatunsisf.c │ │ ├── fp_add_impl.inc │ │ ├── fp_extend.h │ │ ├── fp_extend_impl.inc │ │ ├── fp_fixint_impl.inc │ │ ├── fp_fixuint_impl.inc │ │ ├── fp_lib.h │ │ ├── fp_mul_impl.inc │ │ ├── fp_trunc.h │ │ ├── fp_trunc_impl.inc │ │ ├── fsb_allocator.c │ │ ├── fsb_allocator.h │ │ ├── handshake.c │ │ ├── handshake.h │ │ ├── int_endianness.h │ │ ├── int_lib.h │ │ ├── int_math.h │ │ ├── int_types.h │ │ ├── int_util.c │ │ ├── int_util.h │ │ ├── listener.c │ │ ├── lshrdi3.c │ │ ├── macro_utils.h │ │ ├── mcount.c │ │ ├── moddi3.c │ │ ├── modsi3.c │ │ ├── mram.h │ │ ├── mul32.c │ │ ├── mul64.c │ │ ├── muldc3.c │ │ ├── muldf3.c │ │ ├── mulodi4.c │ │ ├── mulosi4.c │ │ ├── mulsf3.c │ │ ├── mulvdi3.c │ │ ├── mulvsi3.c │ │ ├── mutex.h │ │ ├── negdf2.c │ │ ├── negdi2.c │ │ ├── negsf2.c │ │ ├── negvdi2.c │ │ ├── negvsi2.c │ │ ├── paritydi2.c │ │ ├── paritysi2.c │ │ ├── perfcounter.c │ │ ├── perfcounter.h │ │ ├── popcountdi2.c │ │ ├── popcountsi2.c │ │ ├── powidf2.c │ │ ├── powisf2.c │ │ ├── profiling.c │ │ ├── profiling.h │ │ ├── profiling_internals.h │ │ ├── sem.c │ │ ├── sem.h │ │ ├── seqread.h │ │ ├── seqread.inc │ │ ├── seqread1024.c │ │ ├── seqread128.c │ │ ├── seqread256.c │ │ ├── seqread32.c │ │ ├── seqread512.c │ │ ├── seqread64.c │ │ ├── soft_cache.c │ │ ├── soft_cache.h │ │ ├── subdf3.c │ │ ├── subsf3.c │ │ ├── subvdi3.c │ │ ├── subvsi3.c │ │ ├── sysdef.h │ │ ├── truncdfhf2.c │ │ ├── truncdfsf2.c │ │ ├── truncsfhf2.c │ │ ├── ucmpdi2.c │ │ ├── udiv64.c │ │ ├── udivdi3.c │ │ ├── udivmodsi4.c │ │ ├── udivsi3.c │ │ ├── umoddi3.c │ │ ├── umodsi3.c │ │ └── waitqueue.c │ └── src/ │ ├── device/ │ │ ├── abi/ │ │ │ ├── intermediate.go │ │ │ └── word.go │ │ ├── compiler/ │ │ │ └── compiler.go │ │ ├── core/ │ │ │ ├── job.go │ │ │ └── thread_pool.go │ │ ├── linker/ │ │ │ ├── analyze_liveness_job.go │ │ │ ├── kernel/ │ │ │ │ ├── directive/ │ │ │ │ │ ├── ascii_directive.go │ │ │ │ │ ├── asciz_directive.go │ │ │ │ │ ├── byte_directive.go │ │ │ │ │ ├── long_directive.go │ │ │ │ │ ├── quad_directive.go │ │ │ │ │ ├── short_directive.go │ │ │ │ │ └── zero_directive.go │ │ │ │ ├── encodable.go │ │ │ │ ├── executable.go │ │ │ │ ├── instruction/ │ │ │ │ │ ├── cc/ │ │ │ │ │ │ ├── acquire_cc.go │ │ │ │ │ │ ├── add_nz_cc.go │ │ │ │ │ │ ├── boot_cc.go │ │ │ │ │ │ ├── cc.go │ │ │ │ │ │ ├── const_cc_ge0.go │ │ │ │ │ │ ├── const_cc_geu.go │ │ │ │ │ │ ├── const_cc_zero.go │ │ │ │ │ │ ├── count_nz_cc.go │ │ │ │ │ │ ├── div_cc.go │ │ │ │ │ │ ├── div_nz_cc.go │ │ │ │ │ │ ├── ext_sub_set_cc.go │ │ │ │ │ │ ├── false_cc.go │ │ │ │ │ │ ├── imm_shift_nz_cc.go │ │ │ │ │ │ ├── log_nz_cc.go │ │ │ │ │ │ ├── log_set_cc.go │ │ │ │ │ │ ├── mul_nz_cc.go │ │ │ │ │ │ ├── no_cc.go │ │ │ │ │ │ ├── release_cc.go │ │ │ │ │ │ ├── shift_nz_cc.go │ │ │ │ │ │ ├── sub_nz_cc.go │ │ │ │ │ │ ├── sub_set_cc.go │ │ │ │ │ │ ├── true_cc.go │ │ │ │ │ │ └── true_false_cc.go │ │ │ │ │ ├── endian.go │ │ │ │ │ ├── exception.go │ │ │ │ │ ├── flag.go │ │ │ │ │ ├── instruction.go │ │ │ │ │ ├── op_code.go │ │ │ │ │ ├── reg_descriptor/ │ │ │ │ │ │ ├── gp_reg_descriptor.go │ │ │ │ │ │ ├── pair_reg_descriptor.go │ │ │ │ │ │ ├── sp_reg_descriptor.go │ │ │ │ │ │ └── src_reg_descriptor.go │ │ │ │ │ └── suffix.go │ │ │ │ ├── kernel.go │ │ │ │ ├── label.go │ │ │ │ ├── liveness.go │ │ │ │ ├── relocatable.go │ │ │ │ └── section.go │ │ │ ├── lex_job.go │ │ │ ├── lexer/ │ │ │ │ ├── keyword_factory.go │ │ │ │ ├── lexer.go │ │ │ │ ├── regex.go │ │ │ │ ├── regex_factory.go │ │ │ │ ├── token.go │ │ │ │ ├── token_stream.go │ │ │ │ └── tokenizer.go │ │ │ ├── linker.go │ │ │ ├── logic/ │ │ │ │ ├── instruction_assigner.go │ │ │ │ ├── label_assigner.go │ │ │ │ ├── linker_constant.go │ │ │ │ ├── linker_script.go │ │ │ │ ├── liveness_analyzer.go │ │ │ │ └── set_assigner.go │ │ │ ├── parse_job.go │ │ │ └── parser/ │ │ │ ├── ast.go │ │ │ ├── expr/ │ │ │ │ ├── binary_add_expr.go │ │ │ │ ├── binary_sub_expr.go │ │ │ │ ├── ci_op_code_expr.go │ │ │ │ ├── condition_expr.go │ │ │ │ ├── ddci_op_code_expr.go │ │ │ │ ├── dma_rri_op_code_expr.go │ │ │ │ ├── drdici_op_code_expr.go │ │ │ │ ├── endian_expr.go │ │ │ │ ├── expr.go │ │ │ │ ├── i_op_code_expr.go │ │ │ │ ├── jump_op_code_expr.go │ │ │ │ ├── load_op_code_expr.go │ │ │ │ ├── negative_number_expr.go │ │ │ │ ├── primary_expr.go │ │ │ │ ├── program_counter_expr.go │ │ │ │ ├── r_op_code_expr.go │ │ │ │ ├── rici_op_code_expr.go │ │ │ │ ├── rr_op_code_expr.go │ │ │ │ ├── rri_op_code_expr.go │ │ │ │ ├── rrri_op_code_expr.go │ │ │ │ ├── section_name_expr.go │ │ │ │ ├── section_type_expr.go │ │ │ │ ├── src_reg_expr.go │ │ │ │ ├── store_op_code_expr.go │ │ │ │ ├── suffix_expr.go │ │ │ │ └── symbol_type.go │ │ │ ├── parser.go │ │ │ ├── rule.go │ │ │ ├── stack.go │ │ │ ├── stack_item.go │ │ │ ├── stmt/ │ │ │ │ ├── directive/ │ │ │ │ │ ├── addrsig_stmt.go │ │ │ │ │ ├── addrsig_sym_stmt.go │ │ │ │ │ ├── ascii_stmt.go │ │ │ │ │ ├── asciz_stmt.go │ │ │ │ │ ├── byte_stmt.go │ │ │ │ │ ├── cfi_def_cfa_offset_stmt.go │ │ │ │ │ ├── cfi_endproc.go │ │ │ │ │ ├── cfi_offset_stmt.go │ │ │ │ │ ├── cfi_sections_stmt.go │ │ │ │ │ ├── cfi_startproc_stmt.go │ │ │ │ │ ├── file_number_stmt.go │ │ │ │ │ ├── file_string_stmt.go │ │ │ │ │ ├── global_stmt.go │ │ │ │ │ ├── loc_is_stmt_stmt.go │ │ │ │ │ ├── loc_number_stmt.go │ │ │ │ │ ├── loc_prologue_end_stmt.go │ │ │ │ │ ├── long_program_counter.go │ │ │ │ │ ├── long_section_name_stmt.go │ │ │ │ │ ├── p2_align_stmt.go │ │ │ │ │ ├── quad_stmt.go │ │ │ │ │ ├── section_identifier_number_stmt.go │ │ │ │ │ ├── section_identifier_stmt.go │ │ │ │ │ ├── section_stack_sizes_stmt.go │ │ │ │ │ ├── section_string_number_stmt.go │ │ │ │ │ ├── section_string_stmt.go │ │ │ │ │ ├── set_stmt.go │ │ │ │ │ ├── short_stmt.go │ │ │ │ │ ├── size_stmt.go │ │ │ │ │ ├── text_stmt.go │ │ │ │ │ ├── type_stmt.go │ │ │ │ │ ├── weak_stmt.go │ │ │ │ │ ├── zero_double_number_stmt.go │ │ │ │ │ └── zero_single_number_stmt.go │ │ │ │ ├── instruction/ │ │ │ │ │ ├── ci_stmt.go │ │ │ │ │ ├── ddci_stmt.go │ │ │ │ │ ├── dma_rri_stmt.go │ │ │ │ │ ├── drdici_stmt.go │ │ │ │ │ ├── edri_stmt.go │ │ │ │ │ ├── erid_stmt.go │ │ │ │ │ ├── erii_stmt.go │ │ │ │ │ ├── erir_stmt.go │ │ │ │ │ ├── erri_stmt.go │ │ │ │ │ ├── i_stmt.go │ │ │ │ │ ├── nop_stmt.go │ │ │ │ │ ├── r_stmt.go │ │ │ │ │ ├── rci_stmt.go │ │ │ │ │ ├── rici_stmt.go │ │ │ │ │ ├── rir_stmt.go │ │ │ │ │ ├── rirc_stmt.go │ │ │ │ │ ├── rirci_stmt.go │ │ │ │ │ ├── rr_stmt.go │ │ │ │ │ ├── rrc_stmt.go │ │ │ │ │ ├── rrci_stmt.go │ │ │ │ │ ├── rri_stmt.go │ │ │ │ │ ├── rric_stmt.go │ │ │ │ │ ├── rrici_stmt.go │ │ │ │ │ ├── rrr_stmt.go │ │ │ │ │ ├── rrrc_stmt.go │ │ │ │ │ ├── rrrci_stmt.go │ │ │ │ │ ├── rrri_stmt.go │ │ │ │ │ ├── rrrici_stmt.go │ │ │ │ │ ├── s_erri_stmt.go │ │ │ │ │ ├── s_r_stmt.go │ │ │ │ │ ├── s_rci_stmt.go │ │ │ │ │ ├── s_rirc_stmt.go │ │ │ │ │ ├── s_rirci_stmt.go │ │ │ │ │ ├── s_rr_stmt.go │ │ │ │ │ ├── s_rrc_stmt.go │ │ │ │ │ ├── s_rrci_stmt.go │ │ │ │ │ ├── s_rri_stmt.go │ │ │ │ │ ├── s_rric_stmt.go │ │ │ │ │ ├── s_rrici_stmt.go │ │ │ │ │ ├── s_rrr_stmt.go │ │ │ │ │ ├── s_rrrc_stmt.go │ │ │ │ │ ├── s_rrrci_stmt.go │ │ │ │ │ ├── s_rrri_stmt.go │ │ │ │ │ └── s_rrrici_stmt.go │ │ │ │ ├── label_stmt.go │ │ │ │ ├── stmt.go │ │ │ │ └── sugar/ │ │ │ │ ├── bkp_stmt.go │ │ │ │ ├── boot_ri_stmt.go │ │ │ │ ├── call_ri_stmt.go │ │ │ │ ├── call_rr_stmt.go │ │ │ │ ├── div_step_drdi_stmt.go │ │ │ │ ├── jeq_rii_stmt.go │ │ │ │ ├── jeq_rri_stmt.go │ │ │ │ ├── jnz_ri_stmt.go │ │ │ │ ├── jump_i_stmt.go │ │ │ │ ├── jump_r_stmt.go │ │ │ │ ├── lbs_rri_stmt.go │ │ │ │ ├── lbs_s_rri_stmt.go │ │ │ │ ├── ld_dri_stmt.go │ │ │ │ ├── movd_dd_stmt.go │ │ │ │ ├── move_ri_stmt.go │ │ │ │ ├── move_rici_stmt.go │ │ │ │ ├── move_s_ri_stmt.go │ │ │ │ ├── move_s_rici_stmt.go │ │ │ │ ├── sb_id_ri_stmt.go │ │ │ │ ├── sb_id_rii_stmt.go │ │ │ │ ├── sb_rir_stmt.go │ │ │ │ ├── sd_rid_stmt.go │ │ │ │ ├── stop_stmt.go │ │ │ │ └── time_cfg_r_stmt.go │ │ │ ├── table.go │ │ │ └── walker.go │ │ └── simulator/ │ │ ├── channel/ │ │ │ ├── channel.go │ │ │ ├── channel_command.go │ │ │ └── channel_command_q.go │ │ ├── dpu/ │ │ │ ├── control_interface.go │ │ │ ├── dpu.go │ │ │ ├── dram/ │ │ │ │ ├── dma_command.go │ │ │ │ ├── dma_command_q.go │ │ │ │ ├── memory_command.go │ │ │ │ ├── memory_command_q.go │ │ │ │ ├── memory_controller.go │ │ │ │ ├── memory_scheduler.go │ │ │ │ ├── mram.go │ │ │ │ ├── row_buffer.go │ │ │ │ └── wordline.go │ │ │ ├── logic/ │ │ │ │ ├── alu.go │ │ │ │ ├── cycle_rule.go │ │ │ │ ├── dma.go │ │ │ │ ├── instruction_q.go │ │ │ │ ├── logic.go │ │ │ │ ├── operand_collector.go │ │ │ │ ├── pipeline.go │ │ │ │ ├── reg_set.go │ │ │ │ ├── thread.go │ │ │ │ ├── thread_q.go │ │ │ │ └── thread_scheduler.go │ │ │ ├── reg/ │ │ │ │ ├── condition_reg.go │ │ │ │ ├── exception_reg.go │ │ │ │ ├── flag_reg.go │ │ │ │ ├── gp_reg.go │ │ │ │ ├── pc_reg.go │ │ │ │ ├── reg_file.go │ │ │ │ └── sp_reg.go │ │ │ └── sram/ │ │ │ ├── atomic.go │ │ │ ├── iram.go │ │ │ ├── lock.go │ │ │ └── wram.go │ │ └── rank/ │ │ ├── rank.go │ │ ├── rank_command.go │ │ └── rank_command_q.go │ ├── encoding/ │ │ ├── ascii_encoder.go │ │ └── byte_stream.go │ ├── host/ │ │ ├── abi/ │ │ │ ├── binary.go │ │ │ ├── bytecode.go │ │ │ ├── label.go │ │ │ ├── op_code.go │ │ │ └── relocatable.go │ │ ├── interpreter/ │ │ │ ├── codegen/ │ │ │ │ ├── codegen.go │ │ │ │ └── type_system/ │ │ │ │ ├── method.go │ │ │ │ ├── symbol.go │ │ │ │ └── type_system.go │ │ │ ├── interpreter.go │ │ │ ├── lexer/ │ │ │ │ ├── keyword_factory.go │ │ │ │ ├── lexer.go │ │ │ │ ├── regex.go │ │ │ │ ├── regex_factory.go │ │ │ │ ├── token.go │ │ │ │ ├── token_stream.go │ │ │ │ └── tokenizer.go │ │ │ └── parser/ │ │ │ ├── ast.go │ │ │ ├── decl/ │ │ │ │ ├── decl.go │ │ │ │ ├── func_decl.go │ │ │ │ ├── func_def.go │ │ │ │ └── struct_def.go │ │ │ ├── directive/ │ │ │ │ ├── define_directive.go │ │ │ │ ├── directive.go │ │ │ │ └── include_directive.go │ │ │ ├── expr/ │ │ │ │ ├── additive_expr.go │ │ │ │ ├── arg_list.go │ │ │ │ ├── assignment_expr.go │ │ │ │ ├── bitwise_and_expr.go │ │ │ │ ├── bitwise_or_expr.go │ │ │ │ ├── bitwise_xor_expr.go │ │ │ │ ├── conditional_expr.go │ │ │ │ ├── equality_expr.go │ │ │ │ ├── expr.go │ │ │ │ ├── logical_and_expr.go │ │ │ │ ├── logical_or_expr.go │ │ │ │ ├── multiplicative_expr.go │ │ │ │ ├── postfix_expr.go │ │ │ │ ├── primary_expr.go │ │ │ │ ├── relational_expr.go │ │ │ │ ├── shift_expr.go │ │ │ │ └── unary_expr.go │ │ │ ├── param_list/ │ │ │ │ ├── param.go │ │ │ │ └── param_list.go │ │ │ ├── parser.go │ │ │ ├── rule.go │ │ │ ├── stack.go │ │ │ ├── stack_item.go │ │ │ ├── stmt/ │ │ │ │ ├── block_stmt.go │ │ │ │ ├── break_stmt.go │ │ │ │ ├── continue_stmt.go │ │ │ │ ├── dpu_foreach_stmt.go │ │ │ │ ├── empty_stmt.go │ │ │ │ ├── expr_stmt.go │ │ │ │ ├── for_stmt.go │ │ │ │ ├── if_stmt.go │ │ │ │ ├── return_stmt.go │ │ │ │ ├── stmt.go │ │ │ │ ├── var_decl_init_stmt.go │ │ │ │ ├── var_decl_stmt.go │ │ │ │ └── while_stmt.go │ │ │ ├── table.go │ │ │ └── type_specifier/ │ │ │ └── type_specifier.go │ │ └── vm/ │ │ ├── arena/ │ │ │ ├── arena.go │ │ │ ├── garbage_collector.go │ │ │ ├── memory.go │ │ │ └── pool.go │ │ ├── bank_cycle_job.go │ │ ├── base/ │ │ │ └── object.go │ │ ├── dpu_compute_cycle_job.go │ │ ├── dpu_cycle_job.go │ │ ├── dpu_load_job.go │ │ ├── dram/ │ │ │ ├── bank/ │ │ │ │ ├── array.go │ │ │ │ ├── bank.go │ │ │ │ ├── dma_command.go │ │ │ │ ├── dma_command_q.go │ │ │ │ ├── memory_command.go │ │ │ │ ├── memory_command_q.go │ │ │ │ ├── row_buffer.go │ │ │ │ ├── segment.go │ │ │ │ ├── transfer_command.go │ │ │ │ ├── transfer_command_q.go │ │ │ │ └── wordline.go │ │ │ ├── channel/ │ │ │ │ ├── channel.go │ │ │ │ ├── channel_command.go │ │ │ │ └── channel_command_q.go │ │ │ ├── memory_controller.go │ │ │ ├── memory_mapping.go │ │ │ ├── memory_scheduler.go │ │ │ └── rank/ │ │ │ ├── rank.go │ │ │ ├── rank_command.go │ │ │ └── rank_command_q.go │ │ ├── frame/ │ │ │ ├── frame.go │ │ │ └── frame_chain.go │ │ ├── pc/ │ │ │ └── pc.go │ │ ├── stack/ │ │ │ ├── return_stack.go │ │ │ ├── stack.go │ │ │ └── stack_item.go │ │ ├── symbol/ │ │ │ ├── scope.go │ │ │ ├── scope_chain.go │ │ │ └── symbol.go │ │ ├── type_system/ │ │ │ ├── field.go │ │ │ ├── registry.go │ │ │ ├── skeleton.go │ │ │ └── type_variable.go │ │ └── virtual_machine.go │ ├── main.go │ ├── misc/ │ │ ├── command_line_option.go │ │ ├── command_line_parser.go │ │ ├── command_line_validator.go │ │ ├── config_loader.go │ │ ├── config_validator.go │ │ ├── file_dumper.go │ │ ├── file_scanner.go │ │ └── stat_factory.go │ ├── program/ │ │ ├── app.go │ │ └── task.go │ └── system/ │ └── system.go ├── python_cpp/ │ ├── README.md │ ├── uPIMulator_backend/ │ │ ├── CMakeLists.txt │ │ ├── script/ │ │ │ ├── build.sh │ │ │ ├── format.sh │ │ │ ├── run.sh │ │ │ └── run_serial.sh │ │ └── src/ │ │ ├── CMakeLists.txt │ │ ├── abi/ │ │ │ ├── cc/ │ │ │ │ ├── _base_cc.cc │ │ │ │ ├── _base_cc.h │ │ │ │ ├── acquire_cc.h │ │ │ │ ├── add_nz_cc.h │ │ │ │ ├── boot_cc.h │ │ │ │ ├── const_cc_ge0.h │ │ │ │ ├── const_cc_geu.h │ │ │ │ ├── const_cc_zero.h │ │ │ │ ├── count_nz_cc.h │ │ │ │ ├── div_cc.h │ │ │ │ ├── div_nz_cc.h │ │ │ │ ├── ext_sub_set_cc.h │ │ │ │ ├── false_cc.h │ │ │ │ ├── imm_shift_nz_cc.h │ │ │ │ ├── log_nz_cc.h │ │ │ │ ├── log_set_cc.h │ │ │ │ ├── mul_nz_cc.h │ │ │ │ ├── no_cc.h │ │ │ │ ├── release_cc.h │ │ │ │ ├── shift_nz_cc.h │ │ │ │ ├── sub_nz_cc.h │ │ │ │ ├── sub_set_cc.h │ │ │ │ ├── true_cc.h │ │ │ │ └── true_false_cc.h │ │ │ ├── instruction/ │ │ │ │ ├── instruction.cc │ │ │ │ ├── instruction.h │ │ │ │ ├── op_code.h │ │ │ │ └── suffix.h │ │ │ ├── isa/ │ │ │ │ ├── condition.h │ │ │ │ ├── endian.h │ │ │ │ ├── exception.h │ │ │ │ └── flag.h │ │ │ ├── reg/ │ │ │ │ ├── gp_reg.h │ │ │ │ ├── pair_reg.cc │ │ │ │ ├── pair_reg.h │ │ │ │ ├── sp_reg.h │ │ │ │ ├── src_reg.cc │ │ │ │ └── src_reg.h │ │ │ └── word/ │ │ │ ├── _base_word.cc │ │ │ ├── _base_word.h │ │ │ ├── data_address_word.h │ │ │ ├── data_word.h │ │ │ ├── immediate.h │ │ │ ├── instruction_address_word.h │ │ │ ├── instruction_word.h │ │ │ └── representation.h │ │ ├── converter/ │ │ │ ├── condition_converter.cc │ │ │ ├── condition_converter.h │ │ │ ├── endian_converter.cc │ │ │ ├── endian_converter.h │ │ │ ├── flag_converter.cc │ │ │ ├── flag_converter.h │ │ │ ├── instruction_converter.cc │ │ │ ├── instruction_converter.h │ │ │ ├── op_code_converter.cc │ │ │ ├── op_code_converter.h │ │ │ ├── reg_converter.cc │ │ │ ├── reg_converter.h │ │ │ ├── reg_file_converter.cc │ │ │ ├── reg_file_converter.h │ │ │ ├── suffix_converter.cc │ │ │ └── suffix_converter.h │ │ ├── encoder/ │ │ │ ├── byte.h │ │ │ ├── byte_stream.cc │ │ │ ├── byte_stream.h │ │ │ ├── instruction_encoder.cc │ │ │ └── instruction_encoder.h │ │ ├── initializer/ │ │ │ ├── int_initializer.cc │ │ │ ├── int_initializer.h │ │ │ ├── str_initializer.h │ │ │ └── str_initialzier.cc │ │ ├── main.cc │ │ ├── main.h │ │ ├── simulator/ │ │ │ ├── basic/ │ │ │ │ ├── queue.h │ │ │ │ └── timer_queue.h │ │ │ ├── cpu/ │ │ │ │ ├── cpu.cc │ │ │ │ ├── cpu.h │ │ │ │ ├── fini_thread.cc │ │ │ │ ├── fini_thread.h │ │ │ │ ├── init_thread.cc │ │ │ │ ├── init_thread.h │ │ │ │ ├── sched_thread.cc │ │ │ │ ├── sched_thread.h │ │ │ │ ├── thread.cc │ │ │ │ └── thread.h │ │ │ ├── dpu/ │ │ │ │ ├── alu.cc │ │ │ │ ├── alu.h │ │ │ │ ├── cycle_rule.cc │ │ │ │ ├── cycle_rule.h │ │ │ │ ├── dma.cc │ │ │ │ ├── dma.h │ │ │ │ ├── dma_command.cc │ │ │ │ ├── dma_command.h │ │ │ │ ├── dpu.cc │ │ │ │ ├── dpu.h │ │ │ │ ├── logic.cc │ │ │ │ ├── logic.h │ │ │ │ ├── operand_collector.cc │ │ │ │ ├── operand_collector.h │ │ │ │ ├── pipeline.cc │ │ │ │ ├── pipeline.h │ │ │ │ ├── revolver_scheduler.cc │ │ │ │ ├── revolver_scheduler.h │ │ │ │ ├── thread.cc │ │ │ │ └── thread.h │ │ │ ├── dram/ │ │ │ │ ├── fifo_scheduler.cc │ │ │ │ ├── fifo_scheduler.h │ │ │ │ ├── frfcfs_scheduler.cc │ │ │ │ ├── frfcfs_scheduler.h │ │ │ │ ├── memory_command.cc │ │ │ │ ├── memory_command.h │ │ │ │ ├── memory_controller.cc │ │ │ │ ├── memory_controller.h │ │ │ │ ├── mram.cc │ │ │ │ ├── mram.h │ │ │ │ ├── row_buffer.cc │ │ │ │ ├── row_buffer.h │ │ │ │ ├── scheduler.cc │ │ │ │ ├── scheduler.h │ │ │ │ ├── wordline.cc │ │ │ │ └── wordline.h │ │ │ ├── rank/ │ │ │ │ ├── rank.cc │ │ │ │ ├── rank.h │ │ │ │ └── rank_message.h │ │ │ ├── reg/ │ │ │ │ ├── condition_reg.cc │ │ │ │ ├── condition_reg.h │ │ │ │ ├── exception_reg.h │ │ │ │ ├── flag_reg.h │ │ │ │ ├── gp_reg.cc │ │ │ │ ├── gp_reg.h │ │ │ │ ├── pc_reg.h │ │ │ │ ├── reg_file.cc │ │ │ │ ├── reg_file.h │ │ │ │ ├── sp_reg.cc │ │ │ │ └── sp_reg.h │ │ │ ├── sram/ │ │ │ │ ├── atomic.cc │ │ │ │ ├── atomic.h │ │ │ │ ├── iram.cc │ │ │ │ ├── iram.h │ │ │ │ ├── lock.cc │ │ │ │ ├── lock.h │ │ │ │ ├── wram.cc │ │ │ │ └── wram.h │ │ │ ├── system.cc │ │ │ └── system.h │ │ └── util/ │ │ ├── argument_parser.cc │ │ ├── argument_parser.h │ │ ├── config_loader.h │ │ ├── stat_factory.cc │ │ └── stat_factory.h │ └── uPIMulator_frontend/ │ ├── .flake8 │ ├── .hadolint.yaml │ ├── .isort.cfg │ ├── .markdownlint.yaml │ ├── .shellcheckrc │ ├── benchmark/ │ │ ├── Arithmetic-Throughput/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── BFS/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── app.cu │ │ │ ├── data/ │ │ │ │ └── loc-gowalla_edges.txt │ │ │ ├── dpu/ │ │ │ │ ├── dpu-utils.h │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ ├── app.c │ │ │ │ └── mram-management.h │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── graph.h │ │ │ ├── params.h │ │ │ ├── timer.h │ │ │ └── utils.h │ │ ├── BS/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── bs_omp.c │ │ │ │ │ └── timer.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── binary_search.cu │ │ │ │ ├── binary_search.h │ │ │ │ ├── cpu_lib.py │ │ │ │ ├── cu_lib_import.py │ │ │ │ └── run.py │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── CPU-DPU/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── GEMV/ │ │ │ ├── Makefile │ │ │ ├── _BL_10.conf │ │ │ ├── _NR_TASKLETS_10_BL_10.conf │ │ │ ├── _NR_TASKLETS_11_BL_10.conf │ │ │ ├── _NR_TASKLETS_12_BL_10.conf │ │ │ ├── _NR_TASKLETS_13_BL_10.conf │ │ │ ├── _NR_TASKLETS_14_BL_10.conf │ │ │ ├── _NR_TASKLETS_15_BL_10.conf │ │ │ ├── _NR_TASKLETS_16 │ │ │ ├── _NR_TASKLETS_16_BL_10.conf │ │ │ ├── _NR_TASKLETS_17_BL_10.conf │ │ │ ├── _NR_TASKLETS_18_BL_10.conf │ │ │ ├── _NR_TASKLETS_19_BL_10.conf │ │ │ ├── _NR_TASKLETS_1_BL_10.conf │ │ │ ├── _NR_TASKLETS_20_BL_10.conf │ │ │ ├── _NR_TASKLETS_21_BL_10.conf │ │ │ ├── _NR_TASKLETS_22_BL_10.conf │ │ │ ├── _NR_TASKLETS_23_BL_10.conf │ │ │ ├── _NR_TASKLETS_24_BL_10.conf │ │ │ ├── _NR_TASKLETS_2_BL_10.conf │ │ │ ├── _NR_TASKLETS_3_BL_10.conf │ │ │ ├── _NR_TASKLETS_4_BL_10.conf │ │ │ ├── _NR_TASKLETS_5_BL_10.conf │ │ │ ├── _NR_TASKLETS_6_BL_10.conf │ │ │ ├── _NR_TASKLETS_7_BL_10.conf │ │ │ ├── _NR_TASKLETS_8_BL_10.conf │ │ │ ├── _NR_TASKLETS_9_BL_10.conf │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── gemv_openmp.c │ │ │ │ │ └── gemv_utils.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── gemv.cu │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── HST-L/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── input/ │ │ │ │ └── image_VanHateren.iml │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── HST-S/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── input/ │ │ │ │ │ └── image_VanHateren.iml │ │ │ │ ├── kernel.cpp │ │ │ │ ├── kernel.cu │ │ │ │ ├── kernel.h │ │ │ │ ├── main.cpp │ │ │ │ └── support/ │ │ │ │ ├── common.h │ │ │ │ ├── cuda-setup.h │ │ │ │ ├── partitioner.h │ │ │ │ ├── timer.h │ │ │ │ └── verify.h │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── input/ │ │ │ │ └── image_VanHateren.iml │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── MLP/ │ │ │ ├── Makefile │ │ │ ├── _BL_10.conf │ │ │ ├── _NR_TASKLETS_10_BL_10.conf │ │ │ ├── _NR_TASKLETS_11_BL_10.conf │ │ │ ├── _NR_TASKLETS_12_BL_10.conf │ │ │ ├── _NR_TASKLETS_13_BL_10.conf │ │ │ ├── _NR_TASKLETS_14_BL_10.conf │ │ │ ├── _NR_TASKLETS_15_BL_10.conf │ │ │ ├── _NR_TASKLETS_16 │ │ │ ├── _NR_TASKLETS_16_BL_10.conf │ │ │ ├── _NR_TASKLETS_17_BL_10.conf │ │ │ ├── _NR_TASKLETS_18_BL_10.conf │ │ │ ├── _NR_TASKLETS_19_BL_10.conf │ │ │ ├── _NR_TASKLETS_1_BL_10.conf │ │ │ ├── _NR_TASKLETS_20_BL_10.conf │ │ │ ├── _NR_TASKLETS_21_BL_10.conf │ │ │ ├── _NR_TASKLETS_22_BL_10.conf │ │ │ ├── _NR_TASKLETS_23_BL_10.conf │ │ │ ├── _NR_TASKLETS_24_BL_10.conf │ │ │ ├── _NR_TASKLETS_2_BL_10.conf │ │ │ ├── _NR_TASKLETS_3_BL_10.conf │ │ │ ├── _NR_TASKLETS_4_BL_10.conf │ │ │ ├── _NR_TASKLETS_5_BL_10.conf │ │ │ ├── _NR_TASKLETS_6_BL_10.conf │ │ │ ├── _NR_TASKLETS_7_BL_10.conf │ │ │ ├── _NR_TASKLETS_8_BL_10.conf │ │ │ ├── _NR_TASKLETS_9_BL_10.conf │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── mlp_openmp.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── mlp.cu │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── MRAM-Latency/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ └── copy.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── NW/ │ │ │ ├── .conf │ │ │ ├── Makefile │ │ │ ├── _NR_TASKLETS_10_BL_1024 │ │ │ ├── _NR_TASKLETS_11_BL_1024 │ │ │ ├── _NR_TASKLETS_12_BL_1024 │ │ │ ├── _NR_TASKLETS_13_BL_1024 │ │ │ ├── _NR_TASKLETS_14_BL_1024 │ │ │ ├── _NR_TASKLETS_15_BL_1024 │ │ │ ├── _NR_TASKLETS_16_BL_1024 │ │ │ ├── _NR_TASKLETS_17_BL_1024 │ │ │ ├── _NR_TASKLETS_18_BL_1024 │ │ │ ├── _NR_TASKLETS_19_BL_1024 │ │ │ ├── _NR_TASKLETS_1_BL_1024 │ │ │ ├── _NR_TASKLETS_20_BL_1024 │ │ │ ├── _NR_TASKLETS_21_BL_1024 │ │ │ ├── _NR_TASKLETS_22_BL_1024 │ │ │ ├── _NR_TASKLETS_23_BL_1024 │ │ │ ├── _NR_TASKLETS_24_BL_1024 │ │ │ ├── _NR_TASKLETS_2_BL_1024 │ │ │ ├── _NR_TASKLETS_3_BL_1024 │ │ │ ├── _NR_TASKLETS_4_BL_1024 │ │ │ ├── _NR_TASKLETS_5_BL_1024 │ │ │ ├── _NR_TASKLETS_6_BL_1024 │ │ │ ├── _NR_TASKLETS_7_BL_1024 │ │ │ ├── _NR_TASKLETS_8_BL_1024 │ │ │ ├── _NR_TASKLETS_9_BL_1024 │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── needle.cpp │ │ │ │ │ ├── run │ │ │ │ │ └── run_offload │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── Makefile_nvidia │ │ │ │ ├── README │ │ │ │ ├── common/ │ │ │ │ │ ├── common.mk │ │ │ │ │ └── make.config │ │ │ │ ├── needle.cu │ │ │ │ ├── needle.h │ │ │ │ ├── needle_kernel.cu │ │ │ │ ├── run │ │ │ │ └── timing.h │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── Operational-Intensity/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── RED/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.cpp │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── app_baseline.cu │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── Random-GUPS/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ └── gups.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SCAN-RSS/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.cpp │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── app_baseline.cu │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SCAN-SSA/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SEL/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── ds.h │ │ │ │ ├── kernel.cu │ │ │ │ └── select.cu │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── STREAM/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ ├── add.c │ │ │ │ ├── copy.c │ │ │ │ ├── copyw.c │ │ │ │ ├── scale.c │ │ │ │ └── triad.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── STRIDED/ │ │ │ ├── Makefile │ │ │ ├── dpu/ │ │ │ │ └── strided.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ ├── run.sh │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── cyclecount.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── SpMV/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── app.cu │ │ │ ├── data/ │ │ │ │ ├── bcsstk30.mtx │ │ │ │ └── generate/ │ │ │ │ ├── Makefile │ │ │ │ ├── generate.sh │ │ │ │ └── replicate.c │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ ├── app.c │ │ │ │ └── mram-management.h │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── matrix.h │ │ │ ├── params.h │ │ │ ├── timer.h │ │ │ └── utils.h │ │ ├── TRNS/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── kernel.cpp │ │ │ │ │ ├── kernel.h │ │ │ │ │ ├── main.cpp │ │ │ │ │ └── support/ │ │ │ │ │ ├── common.h │ │ │ │ │ ├── setup.h │ │ │ │ │ ├── timer.h │ │ │ │ │ └── verify.h │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── kernel.cu │ │ │ │ ├── kernel.h │ │ │ │ ├── main.cpp │ │ │ │ └── support/ │ │ │ │ ├── common.h │ │ │ │ ├── cuda-setup.h │ │ │ │ ├── timer.h │ │ │ │ └── verify.h │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── TS/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ ├── inputs/ │ │ │ │ │ │ └── randomlist33M.txt │ │ │ │ │ ├── launch.sh │ │ │ │ │ ├── mprofile.h │ │ │ │ │ ├── streamp_openmp.cpp │ │ │ │ │ └── tools.cpp │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── STREAMP.cu │ │ │ │ ├── inputs/ │ │ │ │ │ └── randomlist33M.txt │ │ │ │ ├── launch.sh │ │ │ │ └── randlist.py │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── UNI/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ ├── ds.h │ │ │ │ ├── kernel.cu │ │ │ │ └── unique.cu │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ ├── VA/ │ │ │ ├── Makefile │ │ │ ├── baselines/ │ │ │ │ ├── cpu/ │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── README │ │ │ │ │ └── app_baseline.c │ │ │ │ └── gpu/ │ │ │ │ ├── Makefile │ │ │ │ ├── README │ │ │ │ └── vec_add.cu │ │ │ ├── dpu/ │ │ │ │ └── task.c │ │ │ ├── host/ │ │ │ │ └── app.c │ │ │ └── support/ │ │ │ ├── common.h │ │ │ ├── params.h │ │ │ └── timer.h │ │ └── WRAM/ │ │ ├── Makefile │ │ ├── dpu/ │ │ │ └── task.c │ │ ├── host/ │ │ │ └── app.c │ │ ├── run.sh │ │ └── support/ │ │ ├── common.h │ │ ├── cyclecount.h │ │ ├── params.h │ │ └── timer.h │ ├── docker/ │ │ ├── compiler.dockerfile │ │ └── parser.dockerfile │ ├── pyproject.toml │ ├── requirements.txt │ ├── sdk/ │ │ ├── misc/ │ │ │ ├── accessMramFromDpu.c │ │ │ ├── coreDump.c │ │ │ ├── crt0.c │ │ │ ├── dpu.lds │ │ │ ├── internalStateReset.c │ │ │ ├── linkerScript.lds │ │ │ ├── restoreRegisters.c │ │ │ └── restore_carry_and_zero_flag.h │ │ ├── stdlib/ │ │ │ ├── abort.c │ │ │ ├── assert.h │ │ │ ├── atoi.c │ │ │ ├── atol.c │ │ │ ├── ctype.h │ │ │ ├── errno.c │ │ │ ├── errno.h │ │ │ ├── exit.c │ │ │ ├── inttypes.h │ │ │ ├── iso646.h │ │ │ ├── limits.h │ │ │ ├── memchr.c │ │ │ ├── memcmp.c │ │ │ ├── memcpy.c │ │ │ ├── memmove.c │ │ │ ├── memmram_utils.h │ │ │ ├── memset.c │ │ │ ├── stdalign.h │ │ │ ├── stdarg.h │ │ │ ├── stdbool.h │ │ │ ├── stddef.h │ │ │ ├── stdint.h │ │ │ ├── stdio.c │ │ │ ├── stdio.h │ │ │ ├── stdlib.h │ │ │ ├── stdnoreturn.h │ │ │ ├── stpcpy.c │ │ │ ├── stpncpy.c │ │ │ ├── strcat.c │ │ │ ├── strchr.c │ │ │ ├── strcmp.c │ │ │ ├── strcpy.c │ │ │ ├── strcspn.c │ │ │ ├── strdup.c │ │ │ ├── strerror.c │ │ │ ├── string.h │ │ │ ├── strlen.c │ │ │ ├── strlwr.c │ │ │ ├── strncat.c │ │ │ ├── strncmp.c │ │ │ ├── strncpy.c │ │ │ ├── strndup.c │ │ │ ├── strnlen.c │ │ │ ├── strpbrk.c │ │ │ ├── strrchr.c │ │ │ ├── strrev.c │ │ │ ├── strsep.c │ │ │ ├── strspn.c │ │ │ ├── strstr.c │ │ │ ├── strtok_r.c │ │ │ ├── strtol.c │ │ │ └── strupr.c │ │ └── syslib/ │ │ ├── absvdi2.c │ │ ├── absvsi2.c │ │ ├── adddf3.c │ │ ├── addsf3.c │ │ ├── addvdi3.c │ │ ├── addvsi3.c │ │ ├── alloc.c │ │ ├── alloc.h │ │ ├── ashldi3.c │ │ ├── ashrdi3.c │ │ ├── atomic_bit.h │ │ ├── atomics.c │ │ ├── attributes.h │ │ ├── barrier.c │ │ ├── barrier.h │ │ ├── bswapdi2.c │ │ ├── bswapsi2.c │ │ ├── buddy_alloc.c │ │ ├── buddy_alloc.h │ │ ├── buddy_realloc.c │ │ ├── built_ins.h │ │ ├── clzdi2.c │ │ ├── clzsi2.c │ │ ├── cmpdi2.c │ │ ├── comparedf2.c │ │ ├── comparesf2.c │ │ ├── ctzdi2.c │ │ ├── ctzsi2.c │ │ ├── defs.c │ │ ├── defs.h │ │ ├── devprivate.h │ │ ├── div32.c │ │ ├── divdf3.c │ │ ├── divdi3.c │ │ ├── divmodsi4.c │ │ ├── divsf3.c │ │ ├── divsi3.c │ │ ├── dpuconst.h │ │ ├── dpufault.h │ │ ├── dpuruntime.h │ │ ├── extendhfsf2.c │ │ ├── extendsfdf2.c │ │ ├── ffsdi2.c │ │ ├── ffssi2.c │ │ ├── ffsti2.c │ │ ├── fixdfdi.c │ │ ├── fixdfsi.c │ │ ├── fixsfdi.c │ │ ├── fixsfsi.c │ │ ├── fixunsdfdi.c │ │ ├── fixunsdfsi.c │ │ ├── fixunssfdi.c │ │ ├── fixunssfsi.c │ │ ├── float.h │ │ ├── floatdidf.c │ │ ├── floatdisf.c │ │ ├── floatsidf.c │ │ ├── floatsisf.c │ │ ├── floatundidf.c │ │ ├── floatundisf.c │ │ ├── floatunsidf.c │ │ ├── floatunsisf.c │ │ ├── fp_add_impl.inc │ │ ├── fp_extend.h │ │ ├── fp_extend_impl.inc │ │ ├── fp_fixint_impl.inc │ │ ├── fp_fixuint_impl.inc │ │ ├── fp_lib.h │ │ ├── fp_mul_impl.inc │ │ ├── fp_trunc.h │ │ ├── fp_trunc_impl.inc │ │ ├── fsb_allocator.c │ │ ├── fsb_allocator.h │ │ ├── handshake.c │ │ ├── handshake.h │ │ ├── int_endianness.h │ │ ├── int_lib.h │ │ ├── int_math.h │ │ ├── int_types.h │ │ ├── int_util.c │ │ ├── int_util.h │ │ ├── listener.c │ │ ├── lshrdi3.c │ │ ├── macro_utils.h │ │ ├── mcount.c │ │ ├── moddi3.c │ │ ├── modsi3.c │ │ ├── mram.h │ │ ├── mul32.c │ │ ├── mul64.c │ │ ├── muldc3.c │ │ ├── muldf3.c │ │ ├── mulodi4.c │ │ ├── mulosi4.c │ │ ├── mulsf3.c │ │ ├── mulvdi3.c │ │ ├── mulvsi3.c │ │ ├── mutex.h │ │ ├── negdf2.c │ │ ├── negdi2.c │ │ ├── negsf2.c │ │ ├── negvdi2.c │ │ ├── negvsi2.c │ │ ├── paritydi2.c │ │ ├── paritysi2.c │ │ ├── perfcounter.c │ │ ├── perfcounter.h │ │ ├── popcountdi2.c │ │ ├── popcountsi2.c │ │ ├── powidf2.c │ │ ├── powisf2.c │ │ ├── profiling.c │ │ ├── profiling.h │ │ ├── profiling_internals.h │ │ ├── sem.c │ │ ├── sem.h │ │ ├── seqread.h │ │ ├── seqread.inc │ │ ├── seqread1024.c │ │ ├── seqread128.c │ │ ├── seqread256.c │ │ ├── seqread32.c │ │ ├── seqread512.c │ │ ├── seqread64.c │ │ ├── soft_cache.c │ │ ├── soft_cache.h │ │ ├── subdf3.c │ │ ├── subsf3.c │ │ ├── subvdi3.c │ │ ├── subvsi3.c │ │ ├── sysdef.h │ │ ├── truncdfhf2.c │ │ ├── truncdfsf2.c │ │ ├── truncsfhf2.c │ │ ├── ucmpdi2.c │ │ ├── udiv64.c │ │ ├── udivdi3.c │ │ ├── udivmodsi4.c │ │ ├── udivsi3.c │ │ ├── umoddi3.c │ │ ├── umodsi3.c │ │ └── waitqueue.c │ ├── src/ │ │ ├── abi/ │ │ │ ├── binary/ │ │ │ │ ├── executable.py │ │ │ │ ├── liveness.py │ │ │ │ └── relocatable.py │ │ │ ├── directive/ │ │ │ │ ├── ascii_directive.py │ │ │ │ ├── asciz_directive.py │ │ │ │ ├── byte_directive.py │ │ │ │ ├── long_directive.py │ │ │ │ ├── quad_directive.py │ │ │ │ ├── short_directive.py │ │ │ │ └── zero_directive.py │ │ │ ├── isa/ │ │ │ │ ├── cc/ │ │ │ │ │ ├── _base_cc.py │ │ │ │ │ ├── acquire_cc.py │ │ │ │ │ ├── add_nz_cc.py │ │ │ │ │ ├── boot_cc.py │ │ │ │ │ ├── const_cc_ge0.py │ │ │ │ │ ├── const_cc_geu.py │ │ │ │ │ ├── const_cc_zero.py │ │ │ │ │ ├── count_nz_cc.py │ │ │ │ │ ├── div_cc.py │ │ │ │ │ ├── div_nz_cc.py │ │ │ │ │ ├── ext_sub_set_cc.py │ │ │ │ │ ├── false_cc.py │ │ │ │ │ ├── imm_shift_nz_cc.py │ │ │ │ │ ├── log_nz_cc.py │ │ │ │ │ ├── log_set_cc.py │ │ │ │ │ ├── mul_nz_cc.py │ │ │ │ │ ├── no_cc.py │ │ │ │ │ ├── release_cc.py │ │ │ │ │ ├── shift_nz_cc.py │ │ │ │ │ ├── sub_nz_cc.py │ │ │ │ │ ├── sub_set_cc.py │ │ │ │ │ ├── true_cc.py │ │ │ │ │ └── true_false_cc.py │ │ │ │ ├── exception.py │ │ │ │ ├── flag.py │ │ │ │ ├── instruction/ │ │ │ │ │ ├── condition.py │ │ │ │ │ ├── endian.py │ │ │ │ │ ├── instruction.py │ │ │ │ │ ├── op_code.py │ │ │ │ │ └── suffix.py │ │ │ │ └── register/ │ │ │ │ ├── gp_register.py │ │ │ │ ├── pair_register.py │ │ │ │ └── sp_register.py │ │ │ ├── label/ │ │ │ │ ├── label.py │ │ │ │ └── symbol.py │ │ │ ├── section/ │ │ │ │ ├── section.py │ │ │ │ ├── section_flag.py │ │ │ │ ├── section_name.py │ │ │ │ └── section_type.py │ │ │ └── word/ │ │ │ ├── _base_word.py │ │ │ ├── data_address_word.py │ │ │ ├── data_word.py │ │ │ ├── double_data_word.py │ │ │ ├── immediate.py │ │ │ ├── instruction_address_word.py │ │ │ ├── instruction_word.py │ │ │ └── representation.py │ │ ├── assembler/ │ │ │ ├── assembler.py │ │ │ └── data_prep/ │ │ │ ├── bin.py │ │ │ ├── bs_data_prep.py │ │ │ ├── gemv_data_prep.py │ │ │ ├── hst_data_prep.py │ │ │ ├── mlp_data_prep.py │ │ │ ├── red_data_prep.py │ │ │ ├── scan_rss_data_prep.py │ │ │ ├── scan_ssa_data_prep.py │ │ │ ├── sel_data_prep.py │ │ │ ├── trns_data_prep.py │ │ │ ├── ts_data_prep.py │ │ │ ├── uni_data_prep.py │ │ │ └── va_data_prep.py │ │ ├── compiler/ │ │ │ └── compiler.py │ │ ├── converter/ │ │ │ ├── condition_converter.py │ │ │ ├── endian_converter.py │ │ │ ├── instruction_converter.py │ │ │ ├── op_code_converter.py │ │ │ ├── register_converter.py │ │ │ ├── section_flag_converter.py │ │ │ ├── section_name_converter.py │ │ │ ├── section_type_converter.py │ │ │ ├── suffix_converter.py │ │ │ └── symbol_converter.py │ │ ├── encoder/ │ │ │ ├── ascii_encoder.py │ │ │ ├── byte.py │ │ │ ├── directive_encoder.py │ │ │ └── instruction_encoder.py │ │ ├── initializer/ │ │ │ ├── directive_initializer.py │ │ │ ├── instruction_initializer.py │ │ │ ├── int_initializer.py │ │ │ └── str_initializer.py │ │ ├── iss/ │ │ │ ├── cpu/ │ │ │ │ ├── cpu.py │ │ │ │ ├── fini_thread.py │ │ │ │ ├── init_thread.py │ │ │ │ └── sched_thread.py │ │ │ ├── dpu/ │ │ │ │ ├── alu.py │ │ │ │ ├── decoder.py │ │ │ │ ├── dispatcher.py │ │ │ │ ├── dma.py │ │ │ │ ├── dpu.py │ │ │ │ ├── logic.py │ │ │ │ ├── scheduler.py │ │ │ │ └── thread.py │ │ │ ├── dram/ │ │ │ │ ├── mram.py │ │ │ │ ├── mram_command.py │ │ │ │ └── word.py │ │ │ ├── register/ │ │ │ │ ├── condition_register.py │ │ │ │ ├── exception_register.py │ │ │ │ ├── flag_register.py │ │ │ │ ├── gp_register.py │ │ │ │ ├── pc_register.py │ │ │ │ ├── register_file.py │ │ │ │ └── sp_register.py │ │ │ ├── sram/ │ │ │ │ ├── atomic.py │ │ │ │ ├── iram.py │ │ │ │ ├── lock.py │ │ │ │ └── wram.py │ │ │ └── system.py │ │ ├── linker_/ │ │ │ ├── linker.py │ │ │ ├── linker_script.py │ │ │ └── logic/ │ │ │ ├── instruction_assigner.py │ │ │ ├── label_assigner.py │ │ │ ├── liveness_analyzer.py │ │ │ └── set_assigner.py │ │ ├── main.py │ │ ├── parser_/ │ │ │ ├── grammar/ │ │ │ │ ├── .antlr/ │ │ │ │ │ ├── assembly.interp │ │ │ │ │ ├── assembly.tokens │ │ │ │ │ ├── assemblyLexer.interp │ │ │ │ │ ├── assemblyLexer.java │ │ │ │ │ ├── assemblyLexer.tokens │ │ │ │ │ └── assemblyParser.java │ │ │ │ ├── assembly.g4 │ │ │ │ ├── assembly.interp │ │ │ │ ├── assembly.tokens │ │ │ │ ├── assemblyLexer.interp │ │ │ │ ├── assemblyLexer.py │ │ │ │ ├── assemblyLexer.tokens │ │ │ │ ├── assemblyListener.py │ │ │ │ └── assemblyParser.py │ │ │ ├── grammar_generator.py │ │ │ └── parser.py │ │ └── util/ │ │ ├── config_loader.py │ │ ├── docker_client.py │ │ ├── param_loader.py │ │ └── path_collector.py │ └── test/ │ ├── abi/ │ │ ├── binary/ │ │ │ ├── executable_test.py │ │ │ └── liveness_test.py │ │ ├── directive/ │ │ │ ├── ascii_directive_test.py │ │ │ ├── asciz_directive_test.py │ │ │ ├── byte_directive_test.py │ │ │ ├── long_directive_test.py │ │ │ ├── quad_directive_test.py │ │ │ ├── short_directive_test.py │ │ │ └── zero_directive_test.py │ │ ├── isa/ │ │ │ └── register/ │ │ │ ├── gp_register_test.py │ │ │ └── pair_register_test.py │ │ ├── label/ │ │ │ └── label_test.py │ │ ├── section/ │ │ │ └── section_test.py │ │ └── word/ │ │ ├── immediate_test.py │ │ └── words_test.py │ ├── compiler/ │ │ └── compiler_test.py │ ├── encoder/ │ │ ├── ascii_encoder_test.py │ │ ├── directive_encoder_test.py │ │ └── instruction_encoder_test.py │ ├── iss/ │ │ ├── dpu/ │ │ │ ├── dma_test.py │ │ │ └── scheduler_test.py │ │ ├── dram/ │ │ │ └── mram_test.py │ │ ├── register/ │ │ │ └── register_file_test.py │ │ └── sram/ │ │ ├── atomic_test.py │ │ ├── iram_test.py │ │ └── wram_test.py │ ├── linker_/ │ │ └── linker_test.py │ ├── parser_/ │ │ ├── grammar_generator_test.py │ │ └── parser_test.py │ └── util/ │ └── config_loader_test.py └── tools/ ├── README.md ├── upmem_profiler/ │ ├── CMakeLists.txt │ ├── script/ │ │ ├── active_tasklet_profile.sh │ │ ├── build.sh │ │ ├── example.sh │ │ ├── function_profile.sh │ │ ├── instruction_mix_profile.sh │ │ ├── mram_access_pattern_profile.sh │ │ ├── timeline_profile.sh │ │ └── tlb_behavior_profile.sh │ └── src/ │ ├── CMakeLists.txt │ ├── abi/ │ │ └── instruction/ │ │ ├── op_code.h │ │ └── suffix.h │ ├── basic/ │ │ ├── instruction_parser.cc │ │ ├── instruction_parser.h │ │ ├── interval.cc │ │ ├── interval.h │ │ ├── reg_file_parser.cc │ │ ├── reg_file_parser.h │ │ ├── stats_parser.cc │ │ └── stats_parser.h │ ├── converter/ │ │ ├── op_code_converter.cc │ │ ├── op_code_converter.h │ │ ├── suffix_converter.cc │ │ └── suffix_converter.h │ ├── instruction_mix/ │ │ ├── instruction_mix_profiler.cc │ │ └── instruction_mix_profiler.h │ ├── main.cc │ ├── main.h │ └── util/ │ ├── argument_parser.cc │ ├── argument_parser.h │ └── config_loader.h └── upmem_reg_model/ ├── data/ │ ├── input.xlsx │ └── output.xlsx ├── script/ │ └── format.sh └── src/ ├── benchmark/ │ ├── _base_benchmark.py │ ├── bs.py │ ├── gemv.py │ ├── hst_l.py │ ├── hst_s.py │ ├── mlp.py │ ├── red.py │ ├── scan_rss.py │ ├── scan_ssa.py │ ├── sel.py │ ├── trns.py │ ├── ts.py │ ├── uni.py │ └── va.py ├── io_/ │ ├── excel_reader.py │ └── excel_writer.py ├── main.py └── regression/ ├── datum.py └── model.py