mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-23 13:27:29 -04:00
Merge branch 'master' of https://github.gatech.edu/casl/Vortex
This commit is contained in:
commit
3372baea87
29 changed files with 0 additions and 5086 deletions
BIN
kernel/.DS_Store
vendored
BIN
kernel/.DS_Store
vendored
Binary file not shown.
|
@ -1,25 +0,0 @@
|
|||
|
||||
COMP = /opt/riscv/bin/riscv32-unknown-elf-gcc
|
||||
# COMP = /opt/riscv/bin/riscv32-unknown-linux-gnu-gcc
|
||||
CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib
|
||||
|
||||
DMP = /opt/riscv/bin/riscv32-unknown-elf-objdump
|
||||
CPY = /opt/riscv/bin/riscv32-unknown-elf-objcopy
|
||||
|
||||
# DMP = /opt/riscv/bin/riscv32-unknown-linux-gnu-objdump
|
||||
# CPY = /opt/riscv/bin/riscv32-unknown-linux-gnu-objcopy
|
||||
|
||||
VX_LIB = ./vx_os/vx_back/vx_back.s ./vx_os/vx_back/vx_back.c ./vx_os/vx_util/queue.s
|
||||
VX_IO = ./vx_os/vx_io/vx_io.s ./vx_os/vx_io/vx_io.c
|
||||
VX_FR = ./vx_include/vx_front.c
|
||||
|
||||
all: HEX DUMP ELF
|
||||
|
||||
DUMP: ELF
|
||||
$(DMP) -D vortex_test.elf > vortex_test.dump
|
||||
|
||||
HEX: ELF
|
||||
$(CPY) -O ihex vortex_test.elf vortex_test.hex
|
||||
|
||||
ELF:
|
||||
$(COMP) $(CC_FLAGS) $(VX_LIB) $(VX_IO) $(VX_FR) vx_main.c -o vortex_test.elf
|
|
@ -1,48 +0,0 @@
|
|||
/* ---- Original Script: /opt/riscv32i/riscv32-unknown-elf/lib/ldscripts/elf32lriscv.x ---- */
|
||||
/* Default linker script, for normal executables */
|
||||
/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
|
||||
Copying and distribution of this script, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. */
|
||||
OUTPUT_FORMAT("elf32-littleriscv", "elf32-littleriscv",
|
||||
"elf32-littleriscv")
|
||||
OUTPUT_ARCH(riscv)
|
||||
ENTRY(_start)
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x80000000;
|
||||
.text :
|
||||
{
|
||||
*(.text)
|
||||
*(.text.unlikely .text.*_unlikely .text.unlikely.*)
|
||||
*(.text.exit .text.exit.*)
|
||||
*(.text.startup .text.startup.*)
|
||||
*(.text.hot .text.hot.*)
|
||||
*(.stub .text.* .gnu.linkonce.t.*)
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
*(.gnu.warning)
|
||||
}
|
||||
.init :
|
||||
{
|
||||
KEEP (*(SORT_NONE(.init)))
|
||||
}
|
||||
.plt : { *(.plt) }
|
||||
.iplt : { *(.iplt) }
|
||||
.fini :
|
||||
{
|
||||
KEEP (*(SORT_NONE(.fini)))
|
||||
}
|
||||
PROVIDE (__etext = .);
|
||||
PROVIDE (_etext = .);
|
||||
PROVIDE (etext = .);
|
||||
PROVIDE (_edata = .);
|
||||
PROVIDE (_end = .);
|
||||
PROVIDE (__global_pointer$ = .);
|
||||
|
||||
. = 0x81000000;
|
||||
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
||||
.rodata1 : { *(.rodata1) }
|
||||
. = 0x82000000;
|
||||
.comment : { *(.comment) }
|
||||
|
||||
}
|
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -1,436 +0,0 @@
|
|||
:0200000480007A
|
||||
:1000000037F1FF7FEF101004130500006B000500AF
|
||||
:10001000938B0600130D0700130F010093030500D7
|
||||
:1000200013051000635C75001301018013030500C4
|
||||
:100030006B500300130515006FF0DFFE1300000086
|
||||
:100040001300000013000000130000001300000064
|
||||
:100050001300000013010F0013050000930F0600AA
|
||||
:10006000938D030013000000130000001300000034
|
||||
:100070001300000013000000130000001300000034
|
||||
:1000800013000000EBE0BF011300000013000000AC
|
||||
:100090001300000013000000130000001300000014
|
||||
:1000A000170500001305451B6B40050017030000F2
|
||||
:1000B000130343F66B000300678000001702000182
|
||||
:1000C000130282252320020023221200232422006F
|
||||
:1000D0002326320023284200232A5200232C6200C8
|
||||
:1000E000232E720023208202232292022324A202C2
|
||||
:1000F0002326B2022328C202232AD202232CE202A0
|
||||
:10010000232EF20223200205232212052324220596
|
||||
:100110002326320523284205232A5205232C620573
|
||||
:10012000232E720523208207232292072324A2076D
|
||||
:100130002326B2072328C207232AD207232CE2074B
|
||||
:10014000232EF2071302100067800000170200013F
|
||||
:100150001302821C0320020083204200032182003C
|
||||
:100160008321C20003220201832242010323820170
|
||||
:100170008323C20103240202832442020325820254
|
||||
:100180008325C20203260203832642030327820338
|
||||
:100190008327C2030328020483284204032982041C
|
||||
:1001A0008329C204032A0205832A4205032B820500
|
||||
:1001B000832BC205032C0206832C4206032D8206E4
|
||||
:1001C000832DC206032E0207832E4207032F8207C8
|
||||
:1001D000832FC2071302000067800000732500020E
|
||||
:1001E000678000007325100267800000130101FE84
|
||||
:1001F000232E1100232C810013040102232604FE68
|
||||
:100200006F0040030327C4FEB7170000938747978A
|
||||
:100210003307F702B707008193874741B307F70019
|
||||
:1002200013850700EF0000448327C4FE938717005F
|
||||
:100230002326F4FE0327C4FE9307F001E3D4E7FC72
|
||||
:10024000130000008320C101032481011301010276
|
||||
:1002500067800000130101FD23261102232481027F
|
||||
:100260002322A103130401031300000013070D0050
|
||||
:10027000B7170000938747973307F702B707008146
|
||||
:1002800093874741B307F70013850700EF004050FD
|
||||
:1002900093070500638A070213070D00B707008163
|
||||
:1002A000131727009387C726B307F700130710001B
|
||||
:1002B00023A0E70093070D0063960700EFF01FE906
|
||||
:1002C0006F00C0057300000013070D00B717000092
|
||||
:1002D000938747973307F702B70700819387474112
|
||||
:1002E000B307F700130784FD930507001385070084
|
||||
:1002F000EF000040832704FE138107008327C4FD1D
|
||||
:10030000832584FD032644FE832684FE0327C4FE42
|
||||
:1003100013850700EFF0DFCF730000008320C102D8
|
||||
:1003200003248102032D41021301010367800000B1
|
||||
:10033000130101FB23261104232481041304010566
|
||||
:10034000EFF0DFE92324A4FE9309010093071000D6
|
||||
:100350002326F4FE6F00C0080327C4FEB717000071
|
||||
:10036000938747973307F702B70700819387474181
|
||||
:10037000B307F70013850700EF00804193070500DE
|
||||
:10038000639A07040327C4FEB717000093874797B3
|
||||
:100390003307F702B707008193874741B307F70098
|
||||
:1003A000130704FD9305070013850700EF00403491
|
||||
:1003B000832784FD13810700832744FD832504FDE3
|
||||
:1003C0000326C4FD832604FE032744FE138507008D
|
||||
:1003D000EFF0DFCD8327C4FE938717002326F4FEBA
|
||||
:1003E0008327C4FE032784FEE3E8E7F613810900B0
|
||||
:1003F000EFF0DFCC9307020063880704B7070081A2
|
||||
:1004000013854741EF00C03893070500639E07023C
|
||||
:10041000930784FB93850700B70700811385474145
|
||||
:10042000EF00002D832704FC138107008327C4FB02
|
||||
:10043000832584FB032644FC832684FC0327C4FC19
|
||||
:1004400013850700EFF0DFBC130000008320C10418
|
||||
:10045000032481041301010567800000130101FBDF
|
||||
:10046000232611042324810413040105232EA4FA56
|
||||
:10047000232CB4FA232AC4FA2328D4FAEFF01FD786
|
||||
:10048000EFF0DFD52322A4FE13090100232604FE8A
|
||||
:10049000232404FE6F000009B709FFFF3301310177
|
||||
:1004A000832784FE2326F4FC832784FB2328F4FC83
|
||||
:1004B00093070100232AF4FC832744FB232CF4FC3C
|
||||
:1004C000832704FB232EF4FC8327C4FE2320F4FEA1
|
||||
:1004D0000327C4FEB7170000938747973307F70237
|
||||
:1004E000B707008193874741B307F7001307C4FCA0
|
||||
:1004F0009305070013850700EF0000198327C4FE4A
|
||||
:10050000938717002326F4FE8327C4FE032744FEA7
|
||||
:1005100063E4E700232604FE832784FE9387170005
|
||||
:100520002324F4FE032784FE8327C4FBE366F7F647
|
||||
:1005300013010900EFF0DFDF130000008320C10486
|
||||
:10054000032481041301010567800000130101FDEC
|
||||
:10055000232611022324810213040103232EA4FC69
|
||||
:100560008325C4FDB707008113850704EF00802DA4
|
||||
:10057000EFF0DFC62320A4FE232604FE6F008006D2
|
||||
:10058000930710002326F4FE232404FE6F00C0030B
|
||||
:10059000B7070081032784FE131727009387C72618
|
||||
:1005A000B307F70003A70700930710006318F700CD
|
||||
:1005B0008327C4FE938717002326F4FE832784FE37
|
||||
:1005C000938717002324F4FE032784FE9307F0018A
|
||||
:1005D000E3D0E7FC8325C4FEB70700811385C70479
|
||||
:1005E000EF0040260327C4FE8327C4FDE36AF7F823
|
||||
:1005F000232204FE6F008002B7070081032744FE18
|
||||
:10060000131727009387C726B307F70023A0070017
|
||||
:10061000832744FE938717002322F4FE832744FE9A
|
||||
:10062000032704FEE3EAE7FC130000008320C10275
|
||||
:10063000032481021301010367800000130101FFFD
|
||||
:1006400023268100232471011304010193870B00E9
|
||||
:10065000138507000324C100832B810013010101CE
|
||||
:1006600067800000930205001303000093037000ED
|
||||
:1006700023A0620023A2620023A4620023A67200CA
|
||||
:1006800023A86200678000009302050003A3820094
|
||||
:100690001303130023A462001383420183AE4200BC
|
||||
:1006A00093935E003303730003AE05002320C30160
|
||||
:1006B00003AE45002322C30103AE85002324C301FA
|
||||
:1006C00003AEC5002326C30103AE05012328C301E1
|
||||
:1006D00003AE4501232AC301938E1E00130F20038E
|
||||
:1006E0006394EE01930E000023A2D2016780000004
|
||||
:1006F0009302050003A38200130000001300000012
|
||||
:10070000130000001300000013000000130000009D
|
||||
:100710001303F3FF23A462001383420183AE02009C
|
||||
:10072000930F2003138F0E00130F1F006314FF019C
|
||||
:10073000130F000023A0E20193935E0033037300C4
|
||||
:10074000032E030023A0C501032E430023A2C501ED
|
||||
:10075000032E830023A4C501032EC30023A6C501D5
|
||||
:10076000032E030123A8C501032E430123AAC501BB
|
||||
:10077000678000009302050003A3820013050000B8
|
||||
:10078000130E200363146E0013051500678000002C
|
||||
:100790009302050003A3820013050000130E00005E
|
||||
:1007A00063146E00130515006780000093020500B6
|
||||
:1007B00003A3C20083A3020133B563006780000076
|
||||
:1007C000130141FF232011002322B10083450500BE
|
||||
:1007D00063880500EF00C001130515006FF01FFFCF
|
||||
:1007E00083200100832541001301C10067800000C0
|
||||
:1007F000B708010023A0B80067800000130101FEC4
|
||||
:10080000232E1100232C8100130401022326A4FEB1
|
||||
:10081000B70700810327C4FE131727009387871AA1
|
||||
:10082000B307F70083A7070013850700EFF05FF910
|
||||
:10083000130000008320C101032481011301010280
|
||||
:1008400067800000130101FE232E1100232C81007C
|
||||
:10085000130401022326A4FE2324B4FE0325C4FEB0
|
||||
:10086000EFF01FF6032584FEEFF05FF9B707008174
|
||||
:1008700013854709EFF0DFF4130000008320C10166
|
||||
:10088000032481011301010267800000130101FDAF
|
||||
:10089000232611022324810213040103232EA4FC26
|
||||
:1008A000232CB4FC232AC4FC2328D4FCB767028180
|
||||
:1008B0000327C4FD23AEE71AB76702819387C71BDE
|
||||
:1008C000032784FD23A2E700B76702819387C71B34
|
||||
:1008D000032744FD23A4E700B76702819387C71B62
|
||||
:1008E000032704FD23A6E700EFF0DF8F2324A4FEF7
|
||||
:1008F000032704FD832784FEB357F7022326F4FE63
|
||||
:10090000032704FD832784FEB377F702638807007B
|
||||
:100910008327C4FE938717002326F4FEB76702815E
|
||||
:100920009387C71B0327C4FE23A8E700032704FD02
|
||||
:10093000832784FE6362F702B76702819386C71B31
|
||||
:10094000B71700801386079B832584FE032504FDCB
|
||||
:10095000EFF0DFB06F000002B76702819386C71B1C
|
||||
:10096000B71700801386079B832504FD032504FD2C
|
||||
:10097000EFF0DFAEEFF09F862322A4FE032704FDF5
|
||||
:10098000832744FE63F8E700032544FEEFF01FBC15
|
||||
:100990006F00C000032504FDEFF05FBB13000000F3
|
||||
:1009A0008320C10203248102130101036780000038
|
||||
:1009B000130101FA232E1104232C810413040106D0
|
||||
:1009C0002326A4FA2324B4FAEFF05FC7232CA4FC57
|
||||
:1009D000832784FD83A70700232AF4FC832784FD53
|
||||
:1009E00083A747002328F4FC832784FD83A787007F
|
||||
:1009F0002326F4FC832784FD83A707012326F4FE26
|
||||
:100A00000327C4FE8327C4FAB307F7022324F4FEA6
|
||||
:100A10008327C4FE639A0700930710002326F4FE81
|
||||
:100A20008327C4FA2324F4FE832784FD83A7C70009
|
||||
:100A30002324F4FC232204FE6F00800D232004FEF7
|
||||
:100A4000232E04FC6F008007032784FA832784FC8D
|
||||
:100A5000B307F7020327C4FDB307F7002322F4FC12
|
||||
:100A6000032784FC8327C4FDB307F702032784FE12
|
||||
:100A7000B307F7002320F4FC832744FC9397270057
|
||||
:100A8000032744FDB307F70003A70700832704FCEF
|
||||
:100A900093972700832604FDB387F60083A70700FA
|
||||
:100AA000B307F702032704FEB307F7002320F4FE81
|
||||
:100AB0008327C4FD93871700232EF4FC0327C4FD6E
|
||||
:100AC000832784FCE362F7F8032784FA832784FCF6
|
||||
:100AD0003307F702832784FEB307F700232EF4FAC7
|
||||
:100AE0008327C4FB939727000327C4FCB307F700B1
|
||||
:100AF000032704FE23A0E700832784FE93871700C3
|
||||
:100B00002324F4FE832744FE938717002322F4FE58
|
||||
:100B1000832744FE0327C4FEE3E2E7F2130000004C
|
||||
:100B20008320C105032481051301010667800000AD
|
||||
:100B3000130101FC232E1102232C81021304010452
|
||||
:100B4000232EA4FC232CB4FC232AC4FC2328D4FC8D
|
||||
:100B50002326E4FCB76702810327C4FD23A8E71C12
|
||||
:100B6000B76702819387071D032784FD23A2E7004F
|
||||
:100B7000B76702819387071D032744FD23A4E7007D
|
||||
:100B8000B76702819387071D0327C4FC23A6E700EC
|
||||
:100B9000B76702819387071D032704FD23A8E70099
|
||||
:100BA000EFF04FE42324A4FE0327C4FC832784FE34
|
||||
:100BB000B357F7022326F4FE0327C4FC832784FEE1
|
||||
:100BC000B377F702638807008327C4FE9387170073
|
||||
:100BD0002326F4FEB76702819387071D0327C4FE0F
|
||||
:100BE00023AAE7000327C4FC832784FE6362F7027D
|
||||
:100BF000B76702819386071DB7170080138687C6E3
|
||||
:100C0000832584FE032504FDEFF05F856F0000025D
|
||||
:100C1000B76702819386071DB7170080138687C6C2
|
||||
:100C20008325C4FC032504FDEFF05F83EFF00FDBA9
|
||||
:100C30002322A4FE032704FD832744FE63F8E70074
|
||||
:100C4000032544FEEFF09F906F00C000032504FDD4
|
||||
:100C5000EFF0DF8F130000008320C1030324810322
|
||||
:100C60001301010467800000130101FB2326110416
|
||||
:100C70002324810413040105232EA4FA232CB4FA9F
|
||||
:100C8000EFF0DF9B2320A4FE832704FE83A7070049
|
||||
:100C9000232EF4FC832704FE83A74700232CF4FCB7
|
||||
:100CA000832704FE83A78700232AF4FC832704FEFE
|
||||
:100CB00083A747012326F4FE0327C4FE8327C4FB32
|
||||
:100CC000B307F7022324F4FE8327C4FE639A0700C8
|
||||
:100CD000930710002326F4FE8327C4FB2324F4FE8D
|
||||
:100CE000832704FE83A7C7002328F4FC232204FEE5
|
||||
:100CF0006F00000C032784FB832704FD3307F702F2
|
||||
:100D0000832784FEB307F7002326F4FC032784FE21
|
||||
:100D1000832704FDB337F70093F7F70F2324F4FC80
|
||||
:100D2000832784FC93B71700A303F4FC834774FC68
|
||||
:100D3000138F0700B7170080938FC7D96B200F0060
|
||||
:100D40007B70FF018327C4FC939727000327C4FD12
|
||||
:100D5000B307F70083A607008327C4FC93972700F7
|
||||
:100D6000032784FDB307F70003A707008327C4FC0C
|
||||
:100D700093972700032644FDB307F6003387E60068
|
||||
:100D800023A0E700832784FE938717002324F4FE23
|
||||
:100D9000B7170080138E07DA67000E0013000000FB
|
||||
:100DA0006B300000832744FE938717002322F4FE54
|
||||
:100DB000832744FE0327C4FEE3EEE7F2130000009E
|
||||
:100DC0008320C1040324810413010105678000000E
|
||||
:100DD000130101FC232E1102232C810213040104B0
|
||||
:100DE000232EA4FC232CB4FC232AC4FC2328D4FCEB
|
||||
:100DF0002326E4FCB76702810327C4FD23A8E71C70
|
||||
:100E0000B76702819387071D032784FD23A2E700AC
|
||||
:100E1000B76702819387071D032744FD23A4E700DA
|
||||
:100E2000B76702819387071D0327C4FC23A6E70049
|
||||
:100E3000B76702819387071D032704FD23A8E700F6
|
||||
:100E4000EFF04FBA2324A4FE0327C4FC832784FEBB
|
||||
:100E5000B357F7022326F4FE0327C4FC832784FE3E
|
||||
:100E6000B377F702638807008327C4FE93871700D0
|
||||
:100E70002326F4FEB76702819387071D0327C4FE6C
|
||||
:100E800023AAE7000327C4FC832784FE6362F702DA
|
||||
:100E9000B76702819386071DB7170080138687F016
|
||||
:100EA000832584FE032504FDEFF04FDB6F00000275
|
||||
:100EB000B76702819386071DB7170080138687F0F6
|
||||
:100EC0008325C4FC032504FDEFF04FD9EFF00FB1EB
|
||||
:100ED0002322A4FE032704FD832744FE63F8E700D2
|
||||
:100EE000032544FEEFF08FE66F00C000032504FDEC
|
||||
:100EF000EFF0CFE5130000008320C103032481033A
|
||||
:100F00001301010467800000130101FB2326110473
|
||||
:100F10002324810413040105232EA4FA232CB4FAFC
|
||||
:100F2000EFF0CFF12320A4FE832704FE83A7070060
|
||||
:100F3000232EF4FC832704FE83A74700232CF4FC14
|
||||
:100F4000832704FE83A78700232AF4FC832704FE5B
|
||||
:100F500083A747012326F4FE0327C4FE8327C4FB8F
|
||||
:100F6000B307F7022324F4FE8327C4FE639A070025
|
||||
:100F7000930710002326F4FE8327C4FB2324F4FEEA
|
||||
:100F8000832704FE83A7C7002328F4FC232204FE42
|
||||
:100F90006F00000C032784FB832704FD3307F7024F
|
||||
:100FA000832784FEB307F7002326F4FC032784FE7F
|
||||
:100FB000832704FDB337F70093F7F70F2324F4FCDE
|
||||
:100FC000832784FC93B71700A303F4FC834774FCC6
|
||||
:100FD000138F0700B7170080938FC7036B200F0094
|
||||
:100FE0007B70FF018327C4FC939727000327C4FD70
|
||||
:100FF000B307F70083A607008327C4FC9397270055
|
||||
:10100000032784FDB307F70003A707008327C4FC69
|
||||
:1010100093972700032644FDB307F6003387E64085
|
||||
:1010200023A0E700832784FE938717002324F4FE80
|
||||
:10103000B7170080138E070467000E00130000002E
|
||||
:101040006B300000832744FE938717002322F4FEB1
|
||||
:10105000832744FE0327C4FEE3EEE7F213000000FB
|
||||
:101060008320C1040324810413010105678000006B
|
||||
:10107000130101FC232E1102232C8102130401040D
|
||||
:10108000232EA4FC232CB4FC232AC4FC2328D4FC48
|
||||
:101090002326E4FCB76702810327C4FD23A4E71ECF
|
||||
:1010A000B76702819387871E032784FD23A2E70089
|
||||
:1010B000B76702819387871E032744FD23A4E700B7
|
||||
:1010C000B76702819387871E0327C4FC23A6E70026
|
||||
:1010D000B76702819387871E032704FD23A8E700D3
|
||||
:1010E000EFF04F902324A4FE0327C4FC832784FE43
|
||||
:1010F000B357F7022326F4FE0327C4FC832784FE9C
|
||||
:10110000B377F702638807008327C4FE938717002D
|
||||
:101110002326F4FEB76702819387871E0327C4FE48
|
||||
:1011200023AAE7000327C4FC832784FE6362F70237
|
||||
:10113000B76702819386871EB71700801386871AC8
|
||||
:10114000832584FE032504FDEFF04FB16F000002FC
|
||||
:10115000B76702819386871EB71700801386871AA8
|
||||
:101160008325C4FC032504FDEFF04FAFEFF00F879C
|
||||
:101170002322A4FE032704FD832744FE63F8E7002F
|
||||
:10118000032544FEEFF08FBC6F00C000032504FD73
|
||||
:10119000EFF0CFBB130000008320C10303248103C1
|
||||
:1011A0001301010467800000130101FB23261104D1
|
||||
:1011B0002324810413040105232EA4FA232CB4FA5A
|
||||
:1011C000EFF0CFC72320A4FE832704FE83A70700E8
|
||||
:1011D000232EF4FC832704FE83A7470083A7070080
|
||||
:1011E000232CF4FC832704FE83A78700232AF4FC26
|
||||
:1011F000832704FE83A747012326F4FE0327C4FEAA
|
||||
:101200008327C4FBB307F7022324F4FE8327C4FE1D
|
||||
:10121000639A0700930710002326F4FE8327C4FB7C
|
||||
:101220002324F4FE832704FE83A7C7002328F4FCAD
|
||||
:10123000232204FE6F00000B032784FB832704FD99
|
||||
:101240003307F702832784FEB307F7002326F4FC55
|
||||
:10125000032784FE832704FDB337F70093F7F70FC6
|
||||
:101260002324F4FC832784FC93B71700A303F4FC26
|
||||
:10127000834774FC138F0700B7170080938F072DE7
|
||||
:101280006B200F007B70FF018327C4FC939727001E
|
||||
:101290000327C4FDB307F70083A607008327C4FC18
|
||||
:1012A00093972700032744FDB307F700032784FD26
|
||||
:1012B0003387E60023A0E700832784FE9387170087
|
||||
:1012C0002324F4FEB7170080138E472D67000E000D
|
||||
:1012D000130000006B300000832744FE9387170043
|
||||
:1012E0002322F4FE832744FE0327C4FEE3E6E7F44B
|
||||
:1012F000130000008320C1040324810413010105AD
|
||||
:1013000067800000130101FC232E1102232C8102AF
|
||||
:1013100013040104232EA4FC232CB4FC232AC4FCB4
|
||||
:101320002328D4FC2326E4FCB76702810327C4FDED
|
||||
:1013300023A4E71EB76702819387871E032784FDD6
|
||||
:1013400023A2E700B76702819387871E032744FD26
|
||||
:1013500023A4E700B76702819387871E0327C4FC95
|
||||
:1013600023A6E700B76702819387871E032704FD42
|
||||
:1013700023A8E700EFE01FE72324A4FE0327C4FC13
|
||||
:10138000832784FEB357F7022326F4FE0327C4FC09
|
||||
:10139000832784FEB377F702638807008327C4FEA0
|
||||
:1013A000938717002326F4FEB76702819387871E71
|
||||
:1013B0000327C4FE23AAE7000327C4FC832784FE77
|
||||
:1013C0006362F702B76702819386871EB7170080B2
|
||||
:1013D0001386C743832584FE032504FDEFF00F88A1
|
||||
:1013E0006F000002B76702819386871EB7170080DF
|
||||
:1013F0001386C7438325C4FC032504FDEFF00F8645
|
||||
:10140000EFE0DFDD2322A4FE032704FD832744FE53
|
||||
:1014100063F8E700032544FEEFF04F936F00C00030
|
||||
:10142000032504FDEFF08F92130000008320C10319
|
||||
:10143000032481031301010467800000130101FBF1
|
||||
:10144000232611042324810413040105232EA4FA66
|
||||
:10145000232CB4FAEFF08F9E2320A4FE832704FEF2
|
||||
:1014600083A70700232EF4FC832704FE83A74700ED
|
||||
:1014700083A70700232CF4FC832704FE83A787009F
|
||||
:10148000232AF4FC832704FE83A747012326F4FEC6
|
||||
:101490000327C4FE8327C4FBB307F7022324F4FE0B
|
||||
:1014A0008327C4FE639A0700930710002326F4FEE7
|
||||
:1014B0008327C4FB2324F4FE832704FE83A7C700ED
|
||||
:1014C0002328F4FC232204FE6F00000B032784FB77
|
||||
:1014D000832704FD3307F702832784FEB307F70051
|
||||
:1014E0002326F4FC032784FE832704FDB337F7008B
|
||||
:1014F00093F7F70F2324F4FC832784FC93B717009A
|
||||
:10150000A303F4FC834774FC138F0700B717008014
|
||||
:10151000938F47566B200F007B70FF018327C4FC1D
|
||||
:10152000939727000327C4FDB307F70083A607009E
|
||||
:101530008327C4FC93972700032744FDB307F700D4
|
||||
:10154000032784FD3387E60223A0E700832784FE78
|
||||
:10155000938717002324F4FEB7170080138E875655
|
||||
:1015600067000E00130000006B300000832744FE6C
|
||||
:10157000938717002322F4FE832744FE0327C4FE2B
|
||||
:10158000E3E6E7F4130000008320C1040324810490
|
||||
:101590001301010567800000130101FD232681026C
|
||||
:1015A00013040103232EA4FC232604FE6F00000174
|
||||
:1015B0008327C4FE938717002326F4FE0327C4FE67
|
||||
:1015C0008327C4FDE346F7FE130000000324C10295
|
||||
:1015D0001301010367800000130101FD232611029E
|
||||
:1015E0002324810213040103232EA4FC232CB4FC26
|
||||
:1015F000B7670281138707208327C4FDB307F7006D
|
||||
:10160000130710002380E7008327C4FD6390070CB5
|
||||
:10161000A30104FE232604FE6F00800A232604FE95
|
||||
:10162000232404FE6F004003B7670281138707205D
|
||||
:10163000832784FEB307F70083C70700638807008A
|
||||
:101640008327C4FE938717002326F4FE832784FE96
|
||||
:10165000938717002324F4FE032784FE832784FD49
|
||||
:10166000E344F7FC0327C4FE832784FD631AF704D1
|
||||
:10167000232204FE6F000004B7670281138707204E
|
||||
:10168000832744FEB307F70023800700B797028142
|
||||
:10169000130710002384E72C13056004EFF0DFEF3D
|
||||
:1016A000B79702812384072C832744FE9387170072
|
||||
:1016B0002322F4FE032744FE832784FDE34EF7FA3A
|
||||
:1016C000834734FEE39C07F46F00400213000000E0
|
||||
:1016D000B797028183C7872C93C7170093F7F70F3B
|
||||
:1016E000E39807FE13054006EFF01FEB1300000020
|
||||
:1016F0008320C102032481021301010367800000DB
|
||||
:10170000130101FF23268100130401019307000048
|
||||
:101710001308000013850700930508000324C10087
|
||||
:101720001301010167800000130101FE232E8100D7
|
||||
:1017300013040102232604FE6F008004B7670281B0
|
||||
:101740000327C4FE1317270093870722B307F70068
|
||||
:101750001307300023A0E700B77702810327C4FEF8
|
||||
:101760001317270093870722B307F70013072000FA
|
||||
:1017700023A0E7008327C4FE938717002326F4FEE7
|
||||
:101780000327C4FE9307F00FE3DAE7FA1300000023
|
||||
:101790000324C1011301010267800000130101FD50
|
||||
:1017A000232611022324810213040103232EA4FC07
|
||||
:1017B000B707008113858711EFF08F80232604FE81
|
||||
:1017C0006F0080058327C4FE638E07008327C4FE55
|
||||
:1017D00093F7F70063980700B70700811385C713D5
|
||||
:1017E000EFE01FFE8327C4FE939727000327C4FD65
|
||||
:1017F000B307F70083A7070013850700EFF00F80FA
|
||||
:10180000B707008113850714EFE09FFB8327C4FE11
|
||||
:10181000938717002326F4FE0327C4FE9307F00FD7
|
||||
:10182000E3D2E7FAB707008113854714EFE05FF9C9
|
||||
:10183000130000008320C10203248102130101036D
|
||||
:1018400067800000130101FF23261100232481007B
|
||||
:1018500013040101EFF05FEDB767028113850722E2
|
||||
:10186000EFF0DFF393070000138507008320C1002A
|
||||
:0C187000032481001301010167800000C7
|
||||
:02000004810079
|
||||
:10000000300000003100000032000000330000002A
|
||||
:10001000340000003500000036000000370000000A
|
||||
:10002000380000003900000061000000620000009C
|
||||
:10003000630000006400000065000000660000002E
|
||||
:100040007761697420666F723A200000466F756EA2
|
||||
:10005000643A20003000000031000000320000004F
|
||||
:1000600033000000340000003500000036000000BE
|
||||
:100070003700000038000000390000006100000077
|
||||
:1000800062000000630000006400000065000000E2
|
||||
:10009000660000000A00000030000000310000008F
|
||||
:1000A0003200000033000000340000003500000082
|
||||
:1000B0003600000037000000380000003900000062
|
||||
:1000C00061000000620000006300000064000000A6
|
||||
:1000D00065000000660000003000000031000000F4
|
||||
:1000E0003200000033000000340000003500000042
|
||||
:1000F0003600000037000000380000003900000022
|
||||
:100100006100000062000000630000006400000065
|
||||
:1001100065000000660000002D2D2D2D2D2D2D2DAC
|
||||
:100120002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DFF
|
||||
:100130002D2D2D2D2D2D2D0A000000000A00000070
|
||||
:10014000200000000A2D2D2D2D2D2D2D2D2D2D2D96
|
||||
:100150002D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2DCF
|
||||
:060160002D2D2D2D0A00DB
|
||||
:100168000000008104000081080000810C0000816B
|
||||
:100178001000008114000081180000811C0000811B
|
||||
:100188002000008124000081280000812C000081CB
|
||||
:100198003000008134000081380000813C0000817B
|
||||
:1001A80054000081580000815C00008160000081DB
|
||||
:1001B80064000081680000816C000081700000818B
|
||||
:1001C80074000081780000817C000081800000813B
|
||||
:1001D80084000081880000818C00008190000081EB
|
||||
:1001E800980000819C000081A0000081A40000818B
|
||||
:1001F800A8000081AC000081B0000081B40000813B
|
||||
:10020800B8000081BC000081C0000081C4000081EA
|
||||
:10021800C8000081CC000081D0000081D40000819A
|
||||
:10022800D8000081DC000081E0000081E40000814A
|
||||
:10023800E8000081EC000081F0000081F4000081FA
|
||||
:10024800F8000081FC0000810001008104010081A8
|
||||
:10025800080100810C010081100100811401008156
|
||||
:04026800060000008C
|
||||
:040000058000000077
|
||||
:00000001FF
|
BIN
kernel/vx_include/.DS_Store
vendored
BIN
kernel/vx_include/.DS_Store
vendored
Binary file not shown.
|
@ -1,482 +0,0 @@
|
|||
|
||||
#include "vx_front.h"
|
||||
#include "../vx_os/vx_back/vx_back.h"
|
||||
|
||||
// -------------------------- Matrix Multiplication --------------------------
|
||||
|
||||
static mat_mult_arg_t mat_mult_args;
|
||||
|
||||
void _vx_mat_mult(unsigned, unsigned);
|
||||
void vx_sq_mat_mult(void * x, void * y, void * z, unsigned mat_dim)
|
||||
{
|
||||
mat_mult_args.x = x;
|
||||
mat_mult_args.y = y;
|
||||
mat_mult_args.z = z;
|
||||
mat_mult_args.mat_dim = mat_dim;
|
||||
|
||||
unsigned num_avail_threads = vx_available_threads();
|
||||
|
||||
unsigned off = (mat_dim/num_avail_threads);
|
||||
|
||||
if ((mat_dim%num_avail_threads) != 0)
|
||||
{
|
||||
off += 1;
|
||||
}
|
||||
|
||||
// vx_printf("Offset: ", off);
|
||||
|
||||
|
||||
mat_mult_args.offset = off;
|
||||
|
||||
if (mat_dim >= num_avail_threads)
|
||||
{
|
||||
vx_spawnWarps(mat_dim, num_avail_threads, _vx_mat_mult, (void *) (&mat_mult_args));
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_spawnWarps(mat_dim, mat_dim, _vx_mat_mult, (void *) (&mat_mult_args));
|
||||
}
|
||||
|
||||
unsigned num_avail_warps = vx_available_warps();
|
||||
|
||||
if (mat_dim > num_avail_warps)
|
||||
{
|
||||
vx_wait_for_warps(num_avail_warps);
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_wait_for_warps(mat_dim);
|
||||
}
|
||||
}
|
||||
|
||||
void _vx_mat_mult(unsigned tid, unsigned wid)
|
||||
{
|
||||
mat_mult_arg_t * args = (mat_mult_arg_t *) vx_get_arg_struct();
|
||||
|
||||
unsigned * x_ptr = args->x;
|
||||
unsigned * y_ptr = args->y;
|
||||
unsigned * z_ptr = args->z;
|
||||
|
||||
unsigned off = args->offset;
|
||||
|
||||
unsigned i_index = off * tid;
|
||||
|
||||
if (off == 0)
|
||||
{
|
||||
off = 1;
|
||||
i_index = tid;
|
||||
}
|
||||
|
||||
unsigned mat_dim = args->mat_dim;
|
||||
|
||||
for (int iter = 0; iter < off; ++iter)
|
||||
{
|
||||
unsigned total = 0;
|
||||
for (unsigned place = 0; place < mat_dim; ++place)
|
||||
{
|
||||
unsigned x_i = (wid * mat_dim) + place;
|
||||
unsigned y_i = (mat_dim * place ) + i_index;
|
||||
|
||||
total += (x_ptr[x_i] * y_ptr[y_i]);
|
||||
}
|
||||
|
||||
int final_i = (wid * mat_dim) + i_index;
|
||||
// unsigned cond = i_index < mat_dim;
|
||||
// __if(cond)
|
||||
// {
|
||||
z_ptr[final_i] = total;
|
||||
i_index++;
|
||||
// }
|
||||
// __else
|
||||
// __end_if
|
||||
}
|
||||
|
||||
// for (int z = 0; z < ((1000 * wid) + 1000); z++);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
static mat_r_arg_t mat_r_args;
|
||||
// -------------------------- Matrix Addition --------------------------
|
||||
void _vx_mat_add(unsigned, unsigned);
|
||||
void vx_mat_add(void * x, void * y, void * z, unsigned num_rows, unsigned num_cols)
|
||||
{
|
||||
mat_r_args.x = x;
|
||||
mat_r_args.y = y;
|
||||
mat_r_args.z = z;
|
||||
mat_r_args.num_cols = num_cols;
|
||||
mat_r_args.num_rows = num_rows;
|
||||
|
||||
|
||||
unsigned num_avail_threads = vx_available_threads();
|
||||
|
||||
unsigned off = (num_cols/num_avail_threads);
|
||||
|
||||
if ((num_cols%num_avail_threads) != 0)
|
||||
{
|
||||
off += 1;
|
||||
}
|
||||
|
||||
|
||||
mat_r_args.offset = off;
|
||||
|
||||
if (num_cols >= num_avail_threads)
|
||||
{
|
||||
vx_spawnWarps(num_rows, num_avail_threads, _vx_mat_add, (void *) (&mat_r_args));
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_spawnWarps(num_rows, num_cols, _vx_mat_add, (void *) (&mat_r_args));
|
||||
}
|
||||
|
||||
unsigned num_avail_warps = vx_available_warps();
|
||||
|
||||
if (num_rows > num_avail_warps)
|
||||
{
|
||||
vx_wait_for_warps(num_avail_warps);
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_wait_for_warps(num_rows);
|
||||
}
|
||||
}
|
||||
|
||||
void _vx_mat_add(unsigned tid, unsigned wid)
|
||||
{
|
||||
// vx_print_str("*");
|
||||
// for (int z = 0; z < ((wid * 1000) + 1000); z++);
|
||||
|
||||
mat_r_arg_t * args = (mat_r_arg_t *) vx_get_arg_struct();
|
||||
|
||||
unsigned * x_ptr = args->x;
|
||||
unsigned * y_ptr = args->y;
|
||||
unsigned * z_ptr = args->z;
|
||||
|
||||
unsigned off = args->offset;
|
||||
|
||||
unsigned i_index = off * tid;
|
||||
|
||||
if (off == 0)
|
||||
{
|
||||
off = 1;
|
||||
i_index = tid;
|
||||
}
|
||||
|
||||
unsigned num_cols = args->num_cols;
|
||||
|
||||
for (int iter = 0; iter < off; ++iter)
|
||||
{
|
||||
int final_i = (wid * num_cols) + i_index;
|
||||
unsigned cond = i_index < num_cols;
|
||||
__if(cond)
|
||||
{
|
||||
z_ptr[final_i] = x_ptr[final_i] + y_ptr[final_i];
|
||||
i_index++;
|
||||
}
|
||||
__else
|
||||
__end_if
|
||||
}
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
// -------------------------- Matrix Subtraction --------------------------
|
||||
void _vx_mat_sub(unsigned, unsigned);
|
||||
void vx_mat_sub(void * x, void * y, void * z, unsigned num_rows, unsigned num_cols)
|
||||
{
|
||||
mat_r_args.x = x;
|
||||
mat_r_args.y = y;
|
||||
mat_r_args.z = z;
|
||||
mat_r_args.num_cols = num_cols;
|
||||
mat_r_args.num_rows = num_rows;
|
||||
|
||||
unsigned num_avail_threads = vx_available_threads();
|
||||
|
||||
unsigned off = (num_cols/num_avail_threads);
|
||||
|
||||
if ((num_cols%num_avail_threads) != 0)
|
||||
{
|
||||
off += 1;
|
||||
}
|
||||
|
||||
|
||||
mat_r_args.offset = off;
|
||||
|
||||
if (num_cols >= num_avail_threads)
|
||||
{
|
||||
vx_spawnWarps(num_rows, num_avail_threads, _vx_mat_sub, (void *) (&mat_r_args));
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_spawnWarps(num_rows, num_cols, _vx_mat_sub, (void *) (&mat_r_args));
|
||||
}
|
||||
|
||||
unsigned num_avail_warps = vx_available_warps();
|
||||
|
||||
if (num_rows > num_avail_warps)
|
||||
{
|
||||
vx_wait_for_warps(num_avail_warps);
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_wait_for_warps(num_rows);
|
||||
}
|
||||
}
|
||||
|
||||
void _vx_mat_sub(unsigned tid, unsigned wid)
|
||||
{
|
||||
// vx_print_str("*");
|
||||
// for (int z = 0; z < ((wid * 1000) + 1000); z++);
|
||||
|
||||
mat_r_arg_t * args = (mat_r_arg_t *) vx_get_arg_struct();
|
||||
|
||||
unsigned * x_ptr = args->x;
|
||||
unsigned * y_ptr = args->y;
|
||||
unsigned * z_ptr = args->z;
|
||||
|
||||
unsigned off = args->offset;
|
||||
|
||||
unsigned i_index = off * tid;
|
||||
|
||||
if (off == 0)
|
||||
{
|
||||
off = 1;
|
||||
i_index = tid;
|
||||
}
|
||||
|
||||
unsigned num_cols = args->num_cols;
|
||||
|
||||
for (int iter = 0; iter < off; ++iter)
|
||||
{
|
||||
int final_i = (wid * num_cols) + i_index;
|
||||
unsigned cond = i_index < num_cols;
|
||||
__if(cond)
|
||||
{
|
||||
z_ptr[final_i] = x_ptr[final_i] - y_ptr[final_i];
|
||||
i_index++;
|
||||
}
|
||||
__else
|
||||
__end_if
|
||||
}
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
static mat_e_arg_t mat_e_args;
|
||||
// --------------------------------------------------------------
|
||||
|
||||
void _vx_e_mat_add(unsigned, unsigned);
|
||||
void vx_e_mat_add(void * x, void * scal, void * z, unsigned num_rows, unsigned num_cols)
|
||||
{
|
||||
mat_e_args.x = x;
|
||||
mat_e_args.scal = scal;
|
||||
mat_e_args.z = z;
|
||||
mat_e_args.num_cols = num_cols;
|
||||
mat_e_args.num_rows = num_rows;
|
||||
|
||||
|
||||
unsigned num_avail_threads = vx_available_threads();
|
||||
|
||||
unsigned off = (num_cols/num_avail_threads);
|
||||
|
||||
if ((num_cols%num_avail_threads) != 0)
|
||||
{
|
||||
off += 1;
|
||||
}
|
||||
|
||||
mat_e_args.offset = off;
|
||||
|
||||
if (num_cols >= num_avail_threads)
|
||||
{
|
||||
vx_spawnWarps(num_rows, num_avail_threads, _vx_e_mat_add, (void *) (&mat_e_args));
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_spawnWarps(num_rows, num_cols, _vx_e_mat_add, (void *) (&mat_e_args));
|
||||
}
|
||||
|
||||
unsigned num_avail_warps = vx_available_warps();
|
||||
|
||||
if (num_rows > num_avail_warps)
|
||||
{
|
||||
vx_wait_for_warps(num_avail_warps);
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_wait_for_warps(num_rows);
|
||||
}
|
||||
}
|
||||
|
||||
void _vx_e_mat_add(unsigned tid, unsigned wid)
|
||||
{
|
||||
// vx_print_str("*");
|
||||
// for (int z = 0; z < ((wid * 1000) + 1000); z++);
|
||||
|
||||
mat_e_arg_t * args = (mat_e_arg_t *) vx_get_arg_struct();
|
||||
|
||||
unsigned * x_ptr = args->x;
|
||||
unsigned scal = *((unsigned *) args->scal);
|
||||
|
||||
unsigned * z_ptr = args->z;
|
||||
|
||||
unsigned off = args->offset;
|
||||
|
||||
unsigned i_index = off * tid;
|
||||
|
||||
if (off == 0)
|
||||
{
|
||||
off = 1;
|
||||
i_index = tid;
|
||||
}
|
||||
|
||||
unsigned num_cols = args->num_cols;
|
||||
|
||||
for (int iter = 0; iter < off; ++iter)
|
||||
{
|
||||
int final_i = (wid * num_cols) + i_index;
|
||||
unsigned cond = i_index < num_cols;
|
||||
__if(cond)
|
||||
{
|
||||
z_ptr[final_i] = x_ptr[final_i] + scal;
|
||||
i_index++;
|
||||
}
|
||||
__else
|
||||
__end_if
|
||||
}
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
void _vx_e_mat_mult(unsigned, unsigned);
|
||||
void vx_e_mat_mult(void * x, void * scal, void * z, unsigned num_rows, unsigned num_cols)
|
||||
{
|
||||
mat_e_args.x = x;
|
||||
mat_e_args.scal = scal;
|
||||
mat_e_args.z = z;
|
||||
mat_e_args.num_cols = num_cols;
|
||||
mat_e_args.num_rows = num_rows;
|
||||
|
||||
|
||||
unsigned num_avail_threads = vx_available_threads();
|
||||
|
||||
unsigned off = (num_cols/num_avail_threads);
|
||||
|
||||
if ((num_cols%num_avail_threads) != 0)
|
||||
{
|
||||
off += 1;
|
||||
}
|
||||
|
||||
mat_e_args.offset = off;
|
||||
|
||||
if (num_cols >= num_avail_threads)
|
||||
{
|
||||
vx_spawnWarps(num_rows, num_avail_threads, _vx_e_mat_mult, (void *) (&mat_e_args));
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_spawnWarps(num_rows, num_cols, _vx_e_mat_mult, (void *) (&mat_e_args));
|
||||
}
|
||||
|
||||
unsigned num_avail_warps = vx_available_warps();
|
||||
|
||||
if (num_rows > num_avail_warps)
|
||||
{
|
||||
vx_wait_for_warps(num_avail_warps);
|
||||
}
|
||||
else
|
||||
{
|
||||
vx_wait_for_warps(num_rows);
|
||||
}
|
||||
}
|
||||
|
||||
void _vx_e_mat_mult(unsigned tid, unsigned wid)
|
||||
{
|
||||
// vx_print_str("*");
|
||||
// for (int z = 0; z < ((wid * 1000) + 1000); z++);
|
||||
|
||||
mat_e_arg_t * args = (mat_e_arg_t *) vx_get_arg_struct();
|
||||
|
||||
unsigned * x_ptr = args->x;
|
||||
unsigned scal = *((unsigned *) args->scal);
|
||||
|
||||
unsigned * z_ptr = args->z;
|
||||
|
||||
unsigned off = args->offset;
|
||||
|
||||
unsigned i_index = off * tid;
|
||||
|
||||
if (off == 0)
|
||||
{
|
||||
off = 1;
|
||||
i_index = tid;
|
||||
}
|
||||
|
||||
unsigned num_cols = args->num_cols;
|
||||
|
||||
for (int iter = 0; iter < off; ++iter)
|
||||
{
|
||||
int final_i = (wid * num_cols) + i_index;
|
||||
unsigned cond = i_index < num_cols;
|
||||
__if(cond)
|
||||
{
|
||||
z_ptr[final_i] = x_ptr[final_i] * scal;
|
||||
i_index++;
|
||||
}
|
||||
__else
|
||||
__end_if
|
||||
}
|
||||
return;
|
||||
|
||||
}
|
||||
|
||||
void sleep(int num)
|
||||
{
|
||||
for (int i = 0; i < num; i++);
|
||||
}
|
||||
|
||||
|
||||
bool barrier_bool = false;
|
||||
bool barriers[32];
|
||||
|
||||
void barrier(unsigned wid, int num)
|
||||
{
|
||||
barriers[wid] = true;
|
||||
|
||||
if (wid == 0)
|
||||
{
|
||||
bool cont = false;
|
||||
int count = 0;
|
||||
while(cont)
|
||||
{
|
||||
count = 0;
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
if (barriers[i]) count++;
|
||||
}
|
||||
|
||||
if (count == num)
|
||||
{
|
||||
for (int i = 0; i < num; i++)
|
||||
{
|
||||
barriers[i] = false;
|
||||
barrier_bool = true;
|
||||
sleep(70);
|
||||
barrier_bool = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while(!barrier_bool);
|
||||
sleep(100);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
#include "../vx_os/vx_back/vx_back.h"
|
||||
#include "../vx_os/vx_io/vx_io.h"
|
||||
|
||||
|
||||
// -------------------------- Matrix Multiplication --------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void * x;
|
||||
void * y;
|
||||
void * z;
|
||||
unsigned mat_dim;
|
||||
unsigned offset;
|
||||
|
||||
} mat_mult_arg_t;
|
||||
void vx_sq_mat_mult(void *, void *, void *, unsigned);
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void * x;
|
||||
void * y;
|
||||
void * z;
|
||||
unsigned num_cols;
|
||||
unsigned num_rows;
|
||||
unsigned offset;
|
||||
|
||||
} mat_r_arg_t;
|
||||
// -------------------------- Matrix Addition -----------------------------
|
||||
void vx_mat_add(void *, void *, void *, unsigned, unsigned);
|
||||
|
||||
// -------------------------- Matrix Subtraction --------------------------
|
||||
void vx_mat_sub(void *, void *, void *, unsigned, unsigned);
|
||||
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
typedef struct
|
||||
{
|
||||
void * x;
|
||||
void * scal;
|
||||
void * z;
|
||||
unsigned num_cols;
|
||||
unsigned num_rows;
|
||||
unsigned offset;
|
||||
|
||||
} mat_e_arg_t;
|
||||
|
||||
// -------------------------- Matrix element Addition ------------------
|
||||
void vx_e_mat_add(void *, void *, void *, unsigned, unsigned);
|
||||
|
||||
// -------------------------- Matrix element Addition ------------------
|
||||
void vx_e_mat_mult(void *, void *, void *, unsigned, unsigned);
|
|
@ -1,40 +0,0 @@
|
|||
|
||||
#include "vx_mem.h"
|
||||
|
||||
|
||||
void * vx_malloc_shared(unsigned size)
|
||||
{
|
||||
void * to_return;
|
||||
|
||||
bool done = false;
|
||||
unsigned curr_size;
|
||||
|
||||
unsigned curr_index = 0;
|
||||
while ((curr_index < free_index) && !done)
|
||||
{
|
||||
curr_size = (unsigned) *(free_array[curr_index].ptr - 4);
|
||||
if (curr_size <= size)
|
||||
{
|
||||
to_return = free_array[curr_index].ptr;
|
||||
done = true;
|
||||
}
|
||||
|
||||
curr_index++;
|
||||
}
|
||||
|
||||
unsigned * u_heap_ptr = (unsigned *) heap_ptr;
|
||||
|
||||
if (!done)
|
||||
{
|
||||
u_heap_ptr[0] = size;
|
||||
to_return = heap_ptr + 4;
|
||||
heap_ptr = to_return + size;
|
||||
}
|
||||
|
||||
return to_return;
|
||||
}
|
||||
|
||||
void vx_free(void * to_free)
|
||||
{
|
||||
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
|
||||
void * vx_malloc_shared(unsigned);
|
||||
void vx_free(void *);
|
||||
|
||||
typedef struct
|
||||
{
|
||||
void * ptr;
|
||||
|
||||
} free_t;
|
||||
|
||||
void * heap_ptr = (void *) 0xFF000000;
|
||||
|
||||
free_t free_array[100];
|
||||
unsigned free_index = 0;
|
||||
|
|
@ -1,83 +0,0 @@
|
|||
|
||||
#include "./vx_include/vx_front.h"
|
||||
|
||||
unsigned x[1024] = {0};
|
||||
unsigned y[1024] = {0};
|
||||
unsigned z[1024] = {0};
|
||||
|
||||
unsigned temp = 6;
|
||||
|
||||
#define MAT_DIM 16
|
||||
|
||||
#define NUM_COLS 16
|
||||
#define NUM_ROWS 16
|
||||
|
||||
double sc_time_stamp()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
void initialize_mats()
|
||||
{
|
||||
for (int i = 0; i < (MAT_DIM * MAT_DIM); i++)
|
||||
{
|
||||
x[i] = 3;
|
||||
y[i] = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void print_matrix(unsigned * z)
|
||||
{
|
||||
vx_print_str("-------------------------------\n");
|
||||
for (int j = 0; j < (MAT_DIM * MAT_DIM); j++)
|
||||
{
|
||||
if (j!=0) if ((j % MAT_DIM) == 0) vx_print_str("\n");
|
||||
vx_print_hex(z[j]);
|
||||
vx_print_str(" ");
|
||||
}
|
||||
vx_print_str("\n-------------------------------\n");
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
|
||||
// unsigned f = temp;
|
||||
|
||||
// vx_print_hex(11);
|
||||
// vx_printc(0, 'k');
|
||||
|
||||
initialize_mats();
|
||||
|
||||
// matrix multiplication
|
||||
// vx_sq_mat_mult(x, y, z, MAT_DIM);
|
||||
// vx_print_str("\n\nMatrix multiplication\n");
|
||||
// print_matrix(z);
|
||||
|
||||
print_matrix(x);
|
||||
|
||||
// // matrix addition
|
||||
// vx_mat_add(x, y, z, NUM_ROWS, NUM_COLS);
|
||||
// vx_print_str("\n\nMatrix Addition\n");
|
||||
// print_matrix(z);
|
||||
|
||||
|
||||
// // matrix sub
|
||||
// vx_mat_sub(x, y, z, NUM_ROWS, NUM_COLS);
|
||||
// vx_print_str("\n\nMatrix Subtraction\n");
|
||||
// print_matrix(z);
|
||||
|
||||
// unsigned scal = 3;
|
||||
|
||||
// // matrix element add
|
||||
vx_e_mat_add(z, &scal, z, NUM_ROWS, NUM_COLS);
|
||||
// vx_print_str("\n\nMatrix Element Addition\n");
|
||||
// print_matrix(z);
|
||||
|
||||
// // matrix element add
|
||||
// vx_e_mat_mult(z, &scal, z, NUM_ROWS, NUM_COLS);
|
||||
// vx_print_str("\n\nMatrix Element Addition\n");
|
||||
// print_matrix(z);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
BIN
kernel/vx_os/.DS_Store
vendored
BIN
kernel/vx_os/.DS_Store
vendored
Binary file not shown.
|
@ -1,153 +0,0 @@
|
|||
|
||||
#include "vx_back.h"
|
||||
#include "../vx_io/vx_io.h"
|
||||
|
||||
|
||||
void vx_before_main()
|
||||
{
|
||||
// unsigned num_available_warps = vx_available_warps();
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
queue_initialize(q + i);
|
||||
}
|
||||
}
|
||||
|
||||
void vx_reschedule_warps()
|
||||
{
|
||||
|
||||
register unsigned curr_warp asm("s10");
|
||||
// vx_printf("Reschedule: ", curr_warp);
|
||||
asm __volatile__("nop");
|
||||
|
||||
if (queue_isEmpty(q+curr_warp))
|
||||
{
|
||||
// vx_printf("Done: ", curr_warp);
|
||||
done[curr_warp] = 1;
|
||||
if (curr_warp == 0)
|
||||
{
|
||||
vx_load_context();
|
||||
return;
|
||||
}
|
||||
ECALL;
|
||||
}
|
||||
|
||||
Job j;
|
||||
queue_dequeue(q+curr_warp,&j);
|
||||
|
||||
// vx_printf("Reschedule -> ", j.wid);
|
||||
asm __volatile__("mv sp,%0"::"r" (j.base_sp):);
|
||||
vx_createThreads(j.n_threads, j.wid, j.func_ptr, j.args, j.assigned_warp);
|
||||
|
||||
ECALL; // should never reach this
|
||||
|
||||
}
|
||||
|
||||
void vx_schedule_warps()
|
||||
{
|
||||
|
||||
unsigned num_available_warps = vx_available_warps();
|
||||
|
||||
asm __volatile__("mv s3, sp");
|
||||
|
||||
for (int curr_warp = 1; curr_warp < num_available_warps; ++curr_warp)
|
||||
{
|
||||
if (!queue_isEmpty(q+curr_warp))
|
||||
{
|
||||
Job j;
|
||||
queue_dequeue(q+curr_warp,&j);
|
||||
asm __volatile__("mv sp,%0"::"r" (j.base_sp):);
|
||||
vx_wspawn(j.n_threads, j.wid, j.func_ptr, j.args, j.assigned_warp);
|
||||
}
|
||||
}
|
||||
|
||||
asm __volatile__("mv sp, s3");
|
||||
|
||||
|
||||
vx_save_context();
|
||||
|
||||
// vx_print_str("saved context\n");
|
||||
|
||||
register unsigned val asm("tp");
|
||||
if (val)
|
||||
{
|
||||
if (!queue_isEmpty(q))
|
||||
{
|
||||
// vx_print_str("found something for w0\n");
|
||||
Job j;
|
||||
queue_dequeue(q,&j);
|
||||
// vx_printf("num_threads: ", j.n_threads);
|
||||
asm __volatile__("mv sp,%0"::"r" (j.base_sp):);
|
||||
vx_createThreads(j.n_threads, j.wid, j.func_ptr, j.args, j.assigned_warp);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
void vx_spawnWarps(unsigned num_Warps, unsigned num_threads, FUNC, void * args)
|
||||
{
|
||||
vx_before_main();
|
||||
|
||||
unsigned num_available_warps = vx_available_warps();
|
||||
// vx_printf("Num available warps: ", num_available_warps);
|
||||
|
||||
asm __volatile__("addi s2, sp, 0");
|
||||
int warp = 0;
|
||||
for (unsigned i = 0; i < num_Warps; i++)
|
||||
{
|
||||
asm __volatile__("lui s3, 0xFFFF0");
|
||||
asm __volatile__("add sp, sp, s3");
|
||||
register unsigned stack_ptr asm("sp");
|
||||
|
||||
Job j;
|
||||
j.wid = i;
|
||||
j.n_threads = num_threads;
|
||||
j.base_sp = stack_ptr;
|
||||
j.func_ptr = (unsigned) func;
|
||||
j.args = args;
|
||||
j.assigned_warp = warp;
|
||||
|
||||
queue_enqueue(q + warp,&j);
|
||||
++warp;
|
||||
if (warp >= num_available_warps) warp = 0;
|
||||
}
|
||||
asm __volatile__("addi sp, s2, 0");
|
||||
|
||||
|
||||
vx_schedule_warps();
|
||||
|
||||
}
|
||||
|
||||
void vx_wait_for_warps(unsigned num_wait)
|
||||
{
|
||||
vx_printf("wait for: ", num_wait);
|
||||
unsigned num_available_warps = vx_available_warps();
|
||||
unsigned num = 0;
|
||||
while (num < num_wait)
|
||||
{
|
||||
// change num=1 if running on RTL
|
||||
// Change num=0 if running on emulator
|
||||
num = 1;
|
||||
for (int i = 0; i < 32; i++)
|
||||
{
|
||||
if (done[i] == 1)
|
||||
{
|
||||
num += 1;
|
||||
}
|
||||
}
|
||||
vx_printf("Found: ", num);
|
||||
}
|
||||
|
||||
// vx_printf("num found: ", num);
|
||||
for (int i = 0; i < num_available_warps; i++) done[i] = 0;
|
||||
}
|
||||
|
||||
|
||||
void * vx_get_arg_struct(void)
|
||||
{
|
||||
register void *ret asm("s7");
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "../vx_util/queue.h"
|
||||
|
||||
#define WSPAWN asm __volatile__(".word 0x3006b"::);
|
||||
#define CLONE asm __volatile__(".word 0x3506b":::);
|
||||
#define JALRS asm __volatile__(".word 0x1bfe0eb":::"s10");
|
||||
#define ECALL asm __volatile__(".word 0x00000073");
|
||||
#define JMPRT asm __volatile__(".word 0x5406b");
|
||||
#define SPLIT asm __volatile__(".word 0xf206b");
|
||||
#define P_JUMP asm __volatile__(".word 0x1ff707b");
|
||||
#define JOIN asm __volatile__(".word 0x306b");
|
||||
|
||||
|
||||
#define __if(val) bool temp = !val; \
|
||||
register unsigned p asm("t5") = temp; \
|
||||
register void * e asm("t6") = &&ELSE; \
|
||||
SPLIT; \
|
||||
P_JUMP; \
|
||||
|
||||
|
||||
#define __else register void * w asm("t3") = &&AFTER; \
|
||||
asm __volatile__("jr t3"); \
|
||||
ELSE: asm __volatile__("nop");
|
||||
|
||||
#define __end_if AFTER:\
|
||||
JOIN;
|
||||
|
||||
static int done[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
|
||||
|
||||
static int main_sp[1];
|
||||
|
||||
unsigned context[64];
|
||||
void vx_save_context(void);
|
||||
void vx_load_context(void);
|
||||
|
||||
|
||||
#define FUNC void (func)(unsigned, unsigned)
|
||||
|
||||
unsigned vx_available_warps(void);
|
||||
unsigned vx_available_threads(void);
|
||||
|
||||
|
||||
void vx_createThreads(unsigned, unsigned, unsigned, void *, unsigned);
|
||||
void vx_wspawn(unsigned, unsigned, unsigned, void *, unsigned);
|
||||
void vx_spawnWarps(unsigned num_Warps, unsigned num_threads, FUNC, void *);
|
||||
void vx_schedule_warps(void);
|
||||
void vx_reschedule_warps(void);
|
||||
void vx_wait_for_warps(unsigned);
|
||||
void * vx_get_arg_struct(void);
|
||||
|
||||
|
|
@ -1,232 +0,0 @@
|
|||
|
||||
|
||||
|
||||
.section .text
|
||||
|
||||
.type _start, @function
|
||||
.global _start
|
||||
_start:
|
||||
# li a1, 4
|
||||
# add a2, a1, a1
|
||||
# li a0, 0
|
||||
# .word 0x0005006b # tmc a0
|
||||
###########################
|
||||
# la a0, 0x10000000
|
||||
# li a1, 7
|
||||
# sw a1, 0(a0)
|
||||
|
||||
# la a0, 0x10000048
|
||||
# li a1, 3
|
||||
# sw a1, 0(a0)
|
||||
|
||||
# la a0, 0x80000000
|
||||
# li a1, 9
|
||||
# sw a1, 0(a0)
|
||||
|
||||
# la a0, 0x80000008
|
||||
# li a1, 8
|
||||
# sw a1, 0(a0)
|
||||
|
||||
# la a0, 0x10000000
|
||||
# lw a2, 0(a0)
|
||||
# la a0, 0x10000048
|
||||
# lw a3, 0(a0)
|
||||
# li a0, 0
|
||||
# .word 0x0005006b # tmc a0
|
||||
########################################
|
||||
# li a0, 4
|
||||
# la a1, SPAWN
|
||||
# .word 0x00b5106b # wspawn a0(numWarps), a1(PC SPAWN)
|
||||
# j SPAWN
|
||||
# nop
|
||||
# nop
|
||||
# nop
|
||||
# nop
|
||||
# nop
|
||||
# nop
|
||||
# nop
|
||||
# nop
|
||||
# SPAWN:
|
||||
# li a2, 7
|
||||
# li a0, 0
|
||||
# li a1, 4
|
||||
# .word 0x00b5406b # barrier a0(barrier id), a1(numWarps)
|
||||
# .word 0x0005006b # tmc a0
|
||||
##########################
|
||||
# li a0, 4
|
||||
# .word 0x0005006b # tmc a0
|
||||
#
|
||||
# # csrr a2, 0x21 # read warp IDs
|
||||
# slti a0, a1, 2
|
||||
# .word 0x0005206b # split a0
|
||||
# beq a0, zero, ELSE
|
||||
# li a2, 5
|
||||
# j DONE
|
||||
# ELSE:
|
||||
# li a2, 7
|
||||
# DONE:
|
||||
# .word 0x0000306b #join
|
||||
# ecall
|
||||
############################
|
||||
lui sp, 0x7ffff
|
||||
# jal vx_before_main
|
||||
jal main
|
||||
li a0, 0
|
||||
.word 0x0005006b # tmc a0
|
||||
|
||||
# Hi:
|
||||
# li a2, 7
|
||||
# ret
|
||||
|
||||
.type vx_createThreads, @function
|
||||
.global vx_createThreads
|
||||
vx_createThreads:
|
||||
mv s7 ,a3 # Moving args to s7
|
||||
mv s10,a4 # Moving assigned_warp to s10
|
||||
mv t5 ,sp # Saving the current stack pointer to t5
|
||||
mv t2 , a0 # t2 = num_threads
|
||||
loop_init:
|
||||
li a0,1 # i = 0
|
||||
loop_cond:
|
||||
bge a0, t2, loop_done # i < num_threads
|
||||
loop_body:
|
||||
addi sp,sp,-2048 # Allocate 2k stack for new thread
|
||||
mv t1, a0 # #lane = i
|
||||
.word 0x3506b # clone register state
|
||||
loop_inc:
|
||||
addi a0, a0, 1
|
||||
j loop_cond
|
||||
loop_done:
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
mv sp,t5 # Restoring the stack
|
||||
li a0,0 # setting tid = 0 for main thread
|
||||
mv t6,a2 # setting func_addr
|
||||
mv s11,t2 # setting num_threads to spawn
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
.word 0x1bfe0eb
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
la a0, vx_reschedule_warps
|
||||
.word 0x5406b
|
||||
|
||||
|
||||
.type vx_wspawn, @function
|
||||
.global vx_wspawn
|
||||
vx_wspawn:
|
||||
la t1, vx_createThreads
|
||||
.word 0x3006b # WSPAWN instruction
|
||||
ret
|
||||
|
||||
.global context
|
||||
|
||||
.type vx_save_context, @function
|
||||
.global vx_save_context
|
||||
vx_save_context:
|
||||
la tp, context
|
||||
sw x0 , 0 (tp)
|
||||
sw x1 , 4 (tp)
|
||||
sw x2 , 8 (tp)
|
||||
sw x3 , 12(tp)
|
||||
sw x4 , 16(tp)
|
||||
sw x5 , 20(tp)
|
||||
sw x6 , 24(tp)
|
||||
sw x7 , 28(tp)
|
||||
sw x8 , 32(tp)
|
||||
sw x9 , 36(tp)
|
||||
sw x10, 40(tp)
|
||||
sw x11, 44(tp)
|
||||
sw x12, 48(tp)
|
||||
sw x13, 52(tp)
|
||||
sw x14, 56(tp)
|
||||
sw x15, 60(tp)
|
||||
sw x16, 64(tp)
|
||||
sw x17, 68(tp)
|
||||
sw x18, 72(tp)
|
||||
sw x19, 76(tp)
|
||||
sw x20, 80(tp)
|
||||
sw x21, 84(tp)
|
||||
sw x22, 88(tp)
|
||||
sw x23, 92(tp)
|
||||
sw x24, 96(tp)
|
||||
sw x25, 100(tp)
|
||||
sw x26, 104(tp)
|
||||
sw x27, 108(tp)
|
||||
sw x28, 112(tp)
|
||||
sw x29, 116(tp)
|
||||
sw x30, 120(tp)
|
||||
sw x31, 124(tp)
|
||||
li tp, 1
|
||||
ret
|
||||
|
||||
|
||||
.type vx_load_context, @function
|
||||
.global vx_load_context
|
||||
vx_load_context:
|
||||
la tp, context
|
||||
lw x0 , 0 (tp)
|
||||
lw x1 , 4 (tp)
|
||||
lw x2 , 8 (tp)
|
||||
lw x3 , 12(tp)
|
||||
lw x4 , 16(tp)
|
||||
lw x5 , 20(tp)
|
||||
lw x6 , 24(tp)
|
||||
lw x7 , 28(tp)
|
||||
lw x8 , 32(tp)
|
||||
lw x9 , 36(tp)
|
||||
lw x10, 40(tp)
|
||||
lw x11, 44(tp)
|
||||
lw x12, 48(tp)
|
||||
lw x13, 52(tp)
|
||||
lw x14, 56(tp)
|
||||
lw x15, 60(tp)
|
||||
lw x16, 64(tp)
|
||||
lw x17, 68(tp)
|
||||
lw x18, 72(tp)
|
||||
lw x19, 76(tp)
|
||||
lw x20, 80(tp)
|
||||
lw x21, 84(tp)
|
||||
lw x22, 88(tp)
|
||||
lw x23, 92(tp)
|
||||
lw x24, 96(tp)
|
||||
lw x25, 100(tp)
|
||||
lw x26, 104(tp)
|
||||
lw x27, 108(tp)
|
||||
lw x28, 112(tp)
|
||||
lw x29, 116(tp)
|
||||
lw x30, 120(tp)
|
||||
lw x31, 124(tp)
|
||||
li tp, 0
|
||||
ret
|
||||
|
||||
.type vx_available_warps, @function
|
||||
.global vx_available_warps
|
||||
vx_available_warps:
|
||||
csrr a0, 0x20
|
||||
ret
|
||||
|
||||
.type vx_available_threads, @function
|
||||
.global vx_available_threads
|
||||
vx_available_threads:
|
||||
csrr a0, 0x21
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
BIN
kernel/vx_os/vx_io/.DS_Store
vendored
BIN
kernel/vx_os/vx_io/.DS_Store
vendored
Binary file not shown.
|
@ -1,15 +0,0 @@
|
|||
|
||||
#include "vx_io.h"
|
||||
|
||||
void vx_print_hex(unsigned f)
|
||||
{
|
||||
vx_print_str(hextoa[f]);
|
||||
}
|
||||
|
||||
|
||||
void vx_printf(char * c, unsigned f)
|
||||
{
|
||||
vx_print_str(c);
|
||||
vx_print_hex(f);
|
||||
vx_print_str("\n");
|
||||
}
|
|
@ -1,9 +0,0 @@
|
|||
|
||||
#pragma once
|
||||
|
||||
#include <stdbool.h>
|
||||
|
||||
static char * hextoa[] = {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
|
||||
void vx_print_hex(unsigned);
|
||||
void vx_print_str(char *);
|
||||
void vx_printf(char *, unsigned);
|
|
@ -1,30 +0,0 @@
|
|||
|
||||
|
||||
.type vx_print_str, @function
|
||||
.global vx_print_str
|
||||
vx_print_str:
|
||||
addi sp, sp, -12
|
||||
sw ra, 0(sp)
|
||||
sw a1, 4(sp)
|
||||
bl:
|
||||
lbu a1,0(a0)
|
||||
beqz a1,be
|
||||
jal vx_printc
|
||||
addi a0, a0, 1
|
||||
j bl
|
||||
be:
|
||||
lw ra, 0(sp)
|
||||
lw a1, 4(sp)
|
||||
addi sp, sp, 12
|
||||
ret
|
||||
|
||||
|
||||
.type vx_printc, @function
|
||||
.global vx_printc
|
||||
vx_printc:
|
||||
la a7, 0x00010000
|
||||
sw a1, 0(a7)
|
||||
ret
|
||||
|
||||
|
||||
|
BIN
kernel/vx_os/vx_util/.DS_Store
vendored
BIN
kernel/vx_os/vx_util/.DS_Store
vendored
Binary file not shown.
|
@ -1,49 +0,0 @@
|
|||
|
||||
#ifndef __QUEUE__
|
||||
|
||||
#define __QUEUE__
|
||||
|
||||
|
||||
|
||||
#define SIZE 100
|
||||
#define WARPS 8
|
||||
|
||||
|
||||
typedef struct Job_t
|
||||
{
|
||||
unsigned wid;
|
||||
unsigned n_threads;
|
||||
unsigned base_sp;
|
||||
unsigned func_ptr;
|
||||
void * args;
|
||||
unsigned assigned_warp;
|
||||
|
||||
} Job;
|
||||
|
||||
typedef struct Queue_t
|
||||
{
|
||||
unsigned start_i;
|
||||
unsigned end_i;
|
||||
unsigned num_j;
|
||||
unsigned total_warps;
|
||||
unsigned active_warps;
|
||||
struct Job_t jobs[SIZE];
|
||||
|
||||
} Queue;
|
||||
|
||||
Queue q[64];
|
||||
|
||||
void queue_initialize(Queue *);
|
||||
|
||||
void queue_enqueue(Queue *, Job *);
|
||||
|
||||
void queue_dequeue(Queue *, Job *);
|
||||
|
||||
int queue_isFull(Queue *);
|
||||
int queue_isEmpty(Queue *);
|
||||
int queue_availableWarps(Queue *);
|
||||
|
||||
|
||||
void func();
|
||||
|
||||
#endif
|
|
@ -1,129 +0,0 @@
|
|||
|
||||
.equ A_WARPS, 7
|
||||
.equ SIZE, 50
|
||||
|
||||
.section .text
|
||||
|
||||
.type queue_initialize, @function
|
||||
.global queue_initialize
|
||||
queue_initialize:
|
||||
mv t0, a0 # loading base address of q
|
||||
li t1, 0 # to initialize variables
|
||||
li t2, A_WARPS # Num of available warps
|
||||
sw t1, 0 (t0) # start_i
|
||||
sw t1, 4 (t0) # end_i
|
||||
sw t1, 8 (t0) # num_j
|
||||
sw t2, 12(t0) # total_warps
|
||||
sw t1, 16(t0) # active_warps
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
.type queue_enqueue, @function
|
||||
.global queue_enqueue
|
||||
queue_enqueue:
|
||||
mv t0, a0 # loding base address of q
|
||||
lw t1, 8 (t0) # t1 = num_j
|
||||
addi t1, t1, 1 # ++t1
|
||||
sw t1, 8 (t0) # num_j = t1
|
||||
addi t1, t0, 20 # t1 = jobs_addr
|
||||
lw t4, 4 (t0) # t4 = end_i
|
||||
slli t2, t4, 5 # index * 32 [log(sizeof(job))]
|
||||
add t1, t1, t2 # jobs + index
|
||||
lw t3, 0 (a1) # wid
|
||||
sw t3, 0 (t1) #
|
||||
lw t3, 4 (a1) # n_threads
|
||||
sw t3, 4 (t1) #
|
||||
lw t3, 8 (a1) # base_sp
|
||||
sw t3, 8 (t1) #
|
||||
lw t3, 12(a1) # func_ptr
|
||||
sw t3, 12(t1) #
|
||||
lw t3, 16(a1) # args
|
||||
sw t3, 16(t1) #
|
||||
lw t3, 20(a1) # assigned_warp
|
||||
sw t3, 20(t1) #
|
||||
addi t4, t4, 1 # end_i++
|
||||
li t5, SIZE # size
|
||||
bne t4, t5, ec # if ((q.end_i + 1) == SIZE)
|
||||
mv t4, zero
|
||||
ec:
|
||||
sw t4, 4 (t0) # end_i
|
||||
ret
|
||||
|
||||
|
||||
.type queue_dequeue, @function
|
||||
.global queue_dequeue
|
||||
|
||||
queue_dequeue:
|
||||
mv t0, a0 # loading base address of q
|
||||
lw t1, 8 (t0) # t1 = num_j
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
nop
|
||||
addi t1, t1, -1 # --t1
|
||||
sw t1, 8 (t0) # num_j = t1
|
||||
addi t1, t0, 20 # t1 = jobs_addr
|
||||
lw t4, 0 (t0) # t4 = start_i
|
||||
li t6, SIZE # size
|
||||
mv t5, t4 # t5 = start_i
|
||||
addi t5, t5, 1 # t5++
|
||||
bne t5, t6, dc # if ((q.start_i + 1) == SIZE)
|
||||
mv t5, zero
|
||||
dc:
|
||||
sw t5, 0(t0) # storing start_i
|
||||
slli t2, t4, 5 # index * 32 [log(sizeof(job))]
|
||||
add t1, t1, t2 # jobs + index
|
||||
lw t3, 0 (t1) # wid
|
||||
sw t3, 0 (a1) #
|
||||
lw t3, 4 (t1) # n_threads
|
||||
sw t3, 4 (a1) #
|
||||
lw t3, 8 (t1) # base_sp
|
||||
sw t3, 8 (a1) #
|
||||
lw t3, 12(t1) # func_ptr
|
||||
sw t3, 12(a1) #
|
||||
lw t3, 16(t1) # args
|
||||
sw t3, 16(a1) #
|
||||
lw t3, 20(t1) # assigned_warp
|
||||
sw t3, 20(a1) #
|
||||
ret
|
||||
|
||||
|
||||
.type queue_isFull, @function
|
||||
.global queue_isFull
|
||||
queue_isFull:
|
||||
mv t0, a0 # loading base address of q
|
||||
lw t1, 8 (t0) # t1 = num_j
|
||||
mv a0, zero # ret_val = 0
|
||||
li t3, SIZE # t3 = SIZE
|
||||
bne t3, t1, qf # if (num_j == 1)
|
||||
addi a0, a0, 1 # ret_val = 1;
|
||||
qf:
|
||||
ret
|
||||
|
||||
|
||||
|
||||
.type queue_isEmpty, @function
|
||||
.global queue_isEmpty
|
||||
queue_isEmpty:
|
||||
mv t0, a0 # loading base address of q
|
||||
lw t1, 8 (t0) # t1 = num_j
|
||||
mv a0, zero # ret_val = 0
|
||||
mv t3, zero # t3 = 0
|
||||
bne t3, t1, qe # if (num_j == 0)
|
||||
addi a0, a0, 1 # ret_val = 1;
|
||||
qe:
|
||||
ret
|
||||
|
||||
|
||||
.type queue_availableWarps, @function
|
||||
.global queue_availableWarps
|
||||
queue_availableWarps:
|
||||
mv t0, a0 # loading base address of q
|
||||
lw t1, 12(t0) # t1 = total_warps
|
||||
lw t2, 16(t0) # t2 = active_warps
|
||||
sltu a0, t2, t1
|
||||
ret
|
|
@ -1,26 +0,0 @@
|
|||
|
||||
COMP = /opt/riscv/bin/riscv32-unknown-elf-gcc
|
||||
CC_FLAGS = -march=rv32im -mabi=ilp32 -O0 -Wl,-Bstatic,-T,linker.ld -ffreestanding -nostdlib
|
||||
|
||||
DMP = /opt/riscv/bin/riscv32-unknown-elf-objdump
|
||||
CPY = /opt/riscv/bin/riscv32-unknown-elf-objcopy
|
||||
|
||||
|
||||
VX_STR = ./startup/vx_start.s
|
||||
VX_INT = ./intrinsics/vx_intrinsics.s
|
||||
VX_IO = ./io/vx_io.s ./io/vx_io.c
|
||||
VX_API = ./vx_api/vx_api.c
|
||||
VX_TEST = ./tests/tests.c
|
||||
|
||||
VX_MAIN = ./vx_main.c
|
||||
|
||||
all: HEX DUMP ELF
|
||||
|
||||
DUMP: ELF
|
||||
$(DMP) -D vortex_runtime.elf > vortex_runtime.dump
|
||||
|
||||
HEX: ELF
|
||||
$(CPY) -O ihex vortex_runtime.elf vortex_runtime.hex
|
||||
|
||||
ELF:
|
||||
$(COMP) $(CC_FLAGS) $(VX_STR) $(VX_INT) $(VX_IO) $(VX_API) $(VX_TEST) $(VX_MAIN) -o vortex_runtime.elf
|
|
@ -1,48 +0,0 @@
|
|||
/* ---- Original Script: /opt/riscv32i/riscv32-unknown-elf/lib/ldscripts/elf32lriscv.x ---- */
|
||||
/* Default linker script, for normal executables */
|
||||
/* Copyright (C) 2014-2017 Free Software Foundation, Inc.
|
||||
Copying and distribution of this script, with or without modification,
|
||||
are permitted in any medium without royalty provided the copyright
|
||||
notice and this notice are preserved. */
|
||||
OUTPUT_FORMAT("elf32-littleriscv", "elf32-littleriscv",
|
||||
"elf32-littleriscv")
|
||||
OUTPUT_ARCH(riscv)
|
||||
ENTRY(_start)
|
||||
SECTIONS
|
||||
{
|
||||
. = 0x80000000;
|
||||
.text :
|
||||
{
|
||||
*(.text)
|
||||
*(.text.unlikely .text.*_unlikely .text.unlikely.*)
|
||||
*(.text.exit .text.exit.*)
|
||||
*(.text.startup .text.startup.*)
|
||||
*(.text.hot .text.hot.*)
|
||||
*(.stub .text.* .gnu.linkonce.t.*)
|
||||
/* .gnu.warning sections are handled specially by elf32.em. */
|
||||
*(.gnu.warning)
|
||||
}
|
||||
.init :
|
||||
{
|
||||
KEEP (*(SORT_NONE(.init)))
|
||||
}
|
||||
.plt : { *(.plt) }
|
||||
.iplt : { *(.iplt) }
|
||||
.fini :
|
||||
{
|
||||
KEEP (*(SORT_NONE(.fini)))
|
||||
}
|
||||
PROVIDE (__etext = .);
|
||||
PROVIDE (_etext = .);
|
||||
PROVIDE (etext = .);
|
||||
PROVIDE (_edata = .);
|
||||
PROVIDE (_end = .);
|
||||
PROVIDE (__global_pointer$ = .);
|
||||
|
||||
. = 0x81000000;
|
||||
.rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
|
||||
.rodata1 : { *(.rodata1) }
|
||||
. = 0x82000000;
|
||||
.comment : { *(.comment) }
|
||||
|
||||
}
|
|
@ -1,856 +0,0 @@
|
|||
|
||||
vortex_runtime.elf: file format elf32-littleriscv
|
||||
|
||||
|
||||
Disassembly of section .text:
|
||||
|
||||
80000000 <_start>:
|
||||
80000000: 00000597 auipc a1,0x0
|
||||
80000004: 02058593 addi a1,a1,32 # 80000020 <vx_set_sp>
|
||||
80000008: 00400513 li a0,4
|
||||
8000000c: 00b5106b 0xb5106b
|
||||
80000010: 010000ef jal ra,80000020 <vx_set_sp>
|
||||
80000014: 748000ef jal ra,8000075c <main>
|
||||
80000018: 00000513 li a0,0
|
||||
8000001c: 0005006b 0x5006b
|
||||
|
||||
80000020 <vx_set_sp>:
|
||||
80000020: 00400513 li a0,4
|
||||
80000024: 0005006b 0x5006b
|
||||
80000028: 021026f3 csrr a3,0x21
|
||||
8000002c: 01a69693 slli a3,a3,0x1a
|
||||
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 <RETURN>
|
||||
80000054: 00000513 li a0,0
|
||||
80000058: 0005006b 0x5006b
|
||||
|
||||
8000005c <RETURN>:
|
||||
8000005c: 00008067 ret
|
||||
|
||||
80000060 <vx_wspawn>:
|
||||
80000060: 00b5106b 0xb5106b
|
||||
80000064: 00008067 ret
|
||||
|
||||
80000068 <vx_tmc>:
|
||||
80000068: 0005006b 0x5006b
|
||||
8000006c: 00008067 ret
|
||||
|
||||
80000070 <vx_barrier>:
|
||||
80000070: 00b5406b 0xb5406b
|
||||
80000074: 00008067 ret
|
||||
|
||||
80000078 <vx_split>:
|
||||
80000078: 0005206b 0x5206b
|
||||
8000007c: 00008067 ret
|
||||
|
||||
80000080 <vx_join>:
|
||||
80000080: 0000306b 0x306b
|
||||
80000084: 00008067 ret
|
||||
|
||||
80000088 <vx_warpID>:
|
||||
80000088: 02102573 csrr a0,0x21
|
||||
8000008c: 00008067 ret
|
||||
|
||||
80000090 <vx_threadID>:
|
||||
80000090: 02002573 csrr a0,0x20
|
||||
80000094: 00008067 ret
|
||||
|
||||
80000098 <vx_resetStack>:
|
||||
80000098: 00400513 li a0,4
|
||||
8000009c: 0005006b 0x5006b
|
||||
800000a0: 021026f3 csrr a3,0x21
|
||||
800000a4: 00f69693 slli a3,a3,0xf
|
||||
800000a8: 02002673 csrr a2,0x20
|
||||
800000ac: 00a61593 slli a1,a2,0xa
|
||||
800000b0: 00261613 slli a2,a2,0x2
|
||||
800000b4: 6ffff137 lui sp,0x6ffff
|
||||
800000b8: 40b10133 sub sp,sp,a1
|
||||
800000bc: 40d10133 sub sp,sp,a3
|
||||
800000c0: 00c10133 add sp,sp,a2
|
||||
800000c4: 021026f3 csrr a3,0x21
|
||||
800000c8: 00068663 beqz a3,800000d4 <RETURN>
|
||||
800000cc: 00000513 li a0,0
|
||||
800000d0: 0005006b 0x5006b
|
||||
|
||||
800000d4 <RETURN>:
|
||||
800000d4: 00008067 ret
|
||||
|
||||
800000d8 <vx_print_str>:
|
||||
800000d8: ff410113 addi sp,sp,-12 # 6fffeff4 <_start-0x1000100c>
|
||||
800000dc: 00112023 sw ra,0(sp)
|
||||
800000e0: 00b12223 sw a1,4(sp)
|
||||
|
||||
800000e4 <bl>:
|
||||
800000e4: 00054583 lbu a1,0(a0)
|
||||
800000e8: 00058863 beqz a1,800000f8 <be>
|
||||
800000ec: 01c000ef jal ra,80000108 <vx_printc>
|
||||
800000f0: 00150513 addi a0,a0,1
|
||||
800000f4: ff1ff06f j 800000e4 <bl>
|
||||
|
||||
800000f8 <be>:
|
||||
800000f8: 00012083 lw ra,0(sp)
|
||||
800000fc: 00412583 lw a1,4(sp)
|
||||
80000100: 00c10113 addi sp,sp,12
|
||||
80000104: 00008067 ret
|
||||
|
||||
80000108 <vx_printc>:
|
||||
80000108: 000102b7 lui t0,0x10
|
||||
8000010c: 00b2a023 sw a1,0(t0) # 10000 <_start-0x7fff0000>
|
||||
80000110: 00008067 ret
|
||||
|
||||
80000114 <vx_print_hex>:
|
||||
80000114: fe010113 addi sp,sp,-32
|
||||
80000118: 00112e23 sw ra,28(sp)
|
||||
8000011c: 00812c23 sw s0,24(sp)
|
||||
80000120: 02010413 addi s0,sp,32
|
||||
80000124: fea42623 sw a0,-20(s0)
|
||||
80000128: 810007b7 lui a5,0x81000
|
||||
8000012c: fec42703 lw a4,-20(s0)
|
||||
80000130: 00271713 slli a4,a4,0x2
|
||||
80000134: 0f478793 addi a5,a5,244 # 810000f4 <z+0xfffffe94>
|
||||
80000138: 00f707b3 add a5,a4,a5
|
||||
8000013c: 0007a783 lw a5,0(a5)
|
||||
80000140: 00078513 mv a0,a5
|
||||
80000144: f95ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000148: 00000013 nop
|
||||
8000014c: 01c12083 lw ra,28(sp)
|
||||
80000150: 01812403 lw s0,24(sp)
|
||||
80000154: 02010113 addi sp,sp,32
|
||||
80000158: 00008067 ret
|
||||
|
||||
8000015c <vx_printf>:
|
||||
8000015c: fe010113 addi sp,sp,-32
|
||||
80000160: 00112e23 sw ra,28(sp)
|
||||
80000164: 00812c23 sw s0,24(sp)
|
||||
80000168: 02010413 addi s0,sp,32
|
||||
8000016c: fea42623 sw a0,-20(s0)
|
||||
80000170: feb42423 sw a1,-24(s0)
|
||||
80000174: fec42503 lw a0,-20(s0)
|
||||
80000178: f61ff0ef jal ra,800000d8 <vx_print_str>
|
||||
8000017c: fe842503 lw a0,-24(s0)
|
||||
80000180: f95ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000184: 810007b7 lui a5,0x81000
|
||||
80000188: 04078513 addi a0,a5,64 # 81000040 <z+0xfffffde0>
|
||||
8000018c: f4dff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000190: 00000013 nop
|
||||
80000194: 01c12083 lw ra,28(sp)
|
||||
80000198: 01812403 lw s0,24(sp)
|
||||
8000019c: 02010113 addi sp,sp,32
|
||||
800001a0: 00008067 ret
|
||||
|
||||
800001a4 <setup_call>:
|
||||
800001a4: fe010113 addi sp,sp,-32
|
||||
800001a8: 00112e23 sw ra,28(sp)
|
||||
800001ac: 00812c23 sw s0,24(sp)
|
||||
800001b0: 02010413 addi s0,sp,32
|
||||
800001b4: 810007b7 lui a5,0x81000
|
||||
800001b8: 23c7a783 lw a5,572(a5) # 8100023c <z+0xffffffdc>
|
||||
800001bc: 00078513 mv a0,a5
|
||||
800001c0: ea9ff0ef jal ra,80000068 <vx_tmc>
|
||||
800001c4: 810007b7 lui a5,0x81000
|
||||
800001c8: 2387a703 lw a4,568(a5) # 81000238 <z+0xffffffd8>
|
||||
800001cc: 810007b7 lui a5,0x81000
|
||||
800001d0: 2347a783 lw a5,564(a5) # 81000234 <z+0xffffffd4>
|
||||
800001d4: 00078513 mv a0,a5
|
||||
800001d8: 000700e7 jalr a4
|
||||
800001dc: eadff0ef jal ra,80000088 <vx_warpID>
|
||||
800001e0: fea42623 sw a0,-20(s0)
|
||||
800001e4: fec42783 lw a5,-20(s0)
|
||||
800001e8: 00078863 beqz a5,800001f8 <setup_call+0x54>
|
||||
800001ec: 00000513 li a0,0
|
||||
800001f0: e79ff0ef jal ra,80000068 <vx_tmc>
|
||||
800001f4: 00c0006f j 80000200 <setup_call+0x5c>
|
||||
800001f8: 00100513 li a0,1
|
||||
800001fc: e6dff0ef jal ra,80000068 <vx_tmc>
|
||||
80000200: 00000013 nop
|
||||
80000204: 01c12083 lw ra,28(sp)
|
||||
80000208: 01812403 lw s0,24(sp)
|
||||
8000020c: 02010113 addi sp,sp,32
|
||||
80000210: 00008067 ret
|
||||
|
||||
80000214 <vx_spawnWarps>:
|
||||
80000214: fe010113 addi sp,sp,-32
|
||||
80000218: 00112e23 sw ra,28(sp)
|
||||
8000021c: 00812c23 sw s0,24(sp)
|
||||
80000220: 02010413 addi s0,sp,32
|
||||
80000224: fea42623 sw a0,-20(s0)
|
||||
80000228: feb42423 sw a1,-24(s0)
|
||||
8000022c: fec42223 sw a2,-28(s0)
|
||||
80000230: fed42023 sw a3,-32(s0)
|
||||
80000234: 810007b7 lui a5,0x81000
|
||||
80000238: fe442703 lw a4,-28(s0)
|
||||
8000023c: 22e7ac23 sw a4,568(a5) # 81000238 <z+0xffffffd8>
|
||||
80000240: 810007b7 lui a5,0x81000
|
||||
80000244: fe042703 lw a4,-32(s0)
|
||||
80000248: 22e7aa23 sw a4,564(a5) # 81000234 <z+0xffffffd4>
|
||||
8000024c: 810007b7 lui a5,0x81000
|
||||
80000250: fe842703 lw a4,-24(s0)
|
||||
80000254: 22e7ae23 sw a4,572(a5) # 8100023c <z+0xffffffdc>
|
||||
80000258: 800007b7 lui a5,0x80000
|
||||
8000025c: 1a478793 addi a5,a5,420 # 800001a4 <z+0xfeffff44>
|
||||
80000260: 00078593 mv a1,a5
|
||||
80000264: fec42503 lw a0,-20(s0)
|
||||
80000268: df9ff0ef jal ra,80000060 <vx_wspawn>
|
||||
8000026c: f39ff0ef jal ra,800001a4 <setup_call>
|
||||
80000270: 00000013 nop
|
||||
80000274: 01c12083 lw ra,28(sp)
|
||||
80000278: 01812403 lw s0,24(sp)
|
||||
8000027c: 02010113 addi sp,sp,32
|
||||
80000280: 00008067 ret
|
||||
|
||||
80000284 <test_tmc>:
|
||||
80000284: fe010113 addi sp,sp,-32
|
||||
80000288: 00112e23 sw ra,28(sp)
|
||||
8000028c: 00812c23 sw s0,24(sp)
|
||||
80000290: 02010413 addi s0,sp,32
|
||||
80000294: 810007b7 lui a5,0x81000
|
||||
80000298: 08478513 addi a0,a5,132 # 81000084 <z+0xfffffe24>
|
||||
8000029c: e3dff0ef jal ra,800000d8 <vx_print_str>
|
||||
800002a0: 00400513 li a0,4
|
||||
800002a4: dc5ff0ef jal ra,80000068 <vx_tmc>
|
||||
800002a8: de9ff0ef jal ra,80000090 <vx_threadID>
|
||||
800002ac: fea42623 sw a0,-20(s0)
|
||||
800002b0: fec42703 lw a4,-20(s0)
|
||||
800002b4: 810007b7 lui a5,0x81000
|
||||
800002b8: fec42683 lw a3,-20(s0)
|
||||
800002bc: 00269693 slli a3,a3,0x2
|
||||
800002c0: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
800002c4: 00f687b3 add a5,a3,a5
|
||||
800002c8: 00e7a023 sw a4,0(a5)
|
||||
800002cc: 00100513 li a0,1
|
||||
800002d0: d99ff0ef jal ra,80000068 <vx_tmc>
|
||||
800002d4: 810007b7 lui a5,0x81000
|
||||
800002d8: 2407a783 lw a5,576(a5) # 81000240 <z+0xffffffe0>
|
||||
800002dc: 00078513 mv a0,a5
|
||||
800002e0: e35ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800002e4: 810007b7 lui a5,0x81000
|
||||
800002e8: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
800002ec: dedff0ef jal ra,800000d8 <vx_print_str>
|
||||
800002f0: 810007b7 lui a5,0x81000
|
||||
800002f4: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
800002f8: 0047a783 lw a5,4(a5)
|
||||
800002fc: 00078513 mv a0,a5
|
||||
80000300: e15ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000304: 810007b7 lui a5,0x81000
|
||||
80000308: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
8000030c: dcdff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000310: 810007b7 lui a5,0x81000
|
||||
80000314: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
80000318: 0087a783 lw a5,8(a5)
|
||||
8000031c: 00078513 mv a0,a5
|
||||
80000320: df5ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000324: 810007b7 lui a5,0x81000
|
||||
80000328: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
8000032c: dadff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000330: 810007b7 lui a5,0x81000
|
||||
80000334: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
80000338: 00c7a783 lw a5,12(a5)
|
||||
8000033c: 00078513 mv a0,a5
|
||||
80000340: dd5ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000344: 810007b7 lui a5,0x81000
|
||||
80000348: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
8000034c: d8dff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000350: 00000013 nop
|
||||
80000354: 01c12083 lw ra,28(sp)
|
||||
80000358: 01812403 lw s0,24(sp)
|
||||
8000035c: 02010113 addi sp,sp,32
|
||||
80000360: 00008067 ret
|
||||
|
||||
80000364 <test_divergence>:
|
||||
80000364: fe010113 addi sp,sp,-32
|
||||
80000368: 00112e23 sw ra,28(sp)
|
||||
8000036c: 00812c23 sw s0,24(sp)
|
||||
80000370: 02010413 addi s0,sp,32
|
||||
80000374: d1dff0ef jal ra,80000090 <vx_threadID>
|
||||
80000378: fea42623 sw a0,-20(s0)
|
||||
8000037c: fec42783 lw a5,-20(s0)
|
||||
80000380: 0027b793 sltiu a5,a5,2
|
||||
80000384: fef405a3 sb a5,-21(s0)
|
||||
80000388: feb44783 lbu a5,-21(s0)
|
||||
8000038c: 00078513 mv a0,a5
|
||||
80000390: ce9ff0ef jal ra,80000078 <vx_split>
|
||||
80000394: feb44783 lbu a5,-21(s0)
|
||||
80000398: 06078463 beqz a5,80000400 <test_divergence+0x9c>
|
||||
8000039c: fec42783 lw a5,-20(s0)
|
||||
800003a0: 0017b793 seqz a5,a5
|
||||
800003a4: fef40523 sb a5,-22(s0)
|
||||
800003a8: fea44783 lbu a5,-22(s0)
|
||||
800003ac: 00078513 mv a0,a5
|
||||
800003b0: cc9ff0ef jal ra,80000078 <vx_split>
|
||||
800003b4: fea44783 lbu a5,-22(s0)
|
||||
800003b8: 02078263 beqz a5,800003dc <test_divergence+0x78>
|
||||
800003bc: 810007b7 lui a5,0x81000
|
||||
800003c0: fec42703 lw a4,-20(s0)
|
||||
800003c4: 00271713 slli a4,a4,0x2
|
||||
800003c8: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
800003cc: 00f707b3 add a5,a4,a5
|
||||
800003d0: 00a00713 li a4,10
|
||||
800003d4: 00e7a023 sw a4,0(a5)
|
||||
800003d8: 0200006f j 800003f8 <test_divergence+0x94>
|
||||
800003dc: 810007b7 lui a5,0x81000
|
||||
800003e0: fec42703 lw a4,-20(s0)
|
||||
800003e4: 00271713 slli a4,a4,0x2
|
||||
800003e8: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
800003ec: 00f707b3 add a5,a4,a5
|
||||
800003f0: 00b00713 li a4,11
|
||||
800003f4: 00e7a023 sw a4,0(a5)
|
||||
800003f8: c89ff0ef jal ra,80000080 <vx_join>
|
||||
800003fc: 0640006f j 80000460 <test_divergence+0xfc>
|
||||
80000400: fec42783 lw a5,-20(s0)
|
||||
80000404: 0037b793 sltiu a5,a5,3
|
||||
80000408: fef404a3 sb a5,-23(s0)
|
||||
8000040c: fe944783 lbu a5,-23(s0)
|
||||
80000410: 00078513 mv a0,a5
|
||||
80000414: c65ff0ef jal ra,80000078 <vx_split>
|
||||
80000418: fe944783 lbu a5,-23(s0)
|
||||
8000041c: 02078263 beqz a5,80000440 <test_divergence+0xdc>
|
||||
80000420: 810007b7 lui a5,0x81000
|
||||
80000424: fec42703 lw a4,-20(s0)
|
||||
80000428: 00271713 slli a4,a4,0x2
|
||||
8000042c: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
80000430: 00f707b3 add a5,a4,a5
|
||||
80000434: 00c00713 li a4,12
|
||||
80000438: 00e7a023 sw a4,0(a5)
|
||||
8000043c: 0200006f j 8000045c <test_divergence+0xf8>
|
||||
80000440: 810007b7 lui a5,0x81000
|
||||
80000444: fec42703 lw a4,-20(s0)
|
||||
80000448: 00271713 slli a4,a4,0x2
|
||||
8000044c: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
80000450: 00f707b3 add a5,a4,a5
|
||||
80000454: 00d00713 li a4,13
|
||||
80000458: 00e7a023 sw a4,0(a5)
|
||||
8000045c: c25ff0ef jal ra,80000080 <vx_join>
|
||||
80000460: c21ff0ef jal ra,80000080 <vx_join>
|
||||
80000464: 810007b7 lui a5,0x81000
|
||||
80000468: 2407a783 lw a5,576(a5) # 81000240 <z+0xffffffe0>
|
||||
8000046c: 00078513 mv a0,a5
|
||||
80000470: ca5ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000474: 810007b7 lui a5,0x81000
|
||||
80000478: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
8000047c: c5dff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000480: 810007b7 lui a5,0x81000
|
||||
80000484: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
80000488: 0047a783 lw a5,4(a5)
|
||||
8000048c: 00078513 mv a0,a5
|
||||
80000490: c85ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000494: 810007b7 lui a5,0x81000
|
||||
80000498: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
8000049c: c3dff0ef jal ra,800000d8 <vx_print_str>
|
||||
800004a0: 810007b7 lui a5,0x81000
|
||||
800004a4: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
800004a8: 0087a783 lw a5,8(a5)
|
||||
800004ac: 00078513 mv a0,a5
|
||||
800004b0: c65ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800004b4: 810007b7 lui a5,0x81000
|
||||
800004b8: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
800004bc: c1dff0ef jal ra,800000d8 <vx_print_str>
|
||||
800004c0: 810007b7 lui a5,0x81000
|
||||
800004c4: 24078793 addi a5,a5,576 # 81000240 <z+0xffffffe0>
|
||||
800004c8: 00c7a783 lw a5,12(a5)
|
||||
800004cc: 00078513 mv a0,a5
|
||||
800004d0: c45ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800004d4: 810007b7 lui a5,0x81000
|
||||
800004d8: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
800004dc: bfdff0ef jal ra,800000d8 <vx_print_str>
|
||||
800004e0: 00000013 nop
|
||||
800004e4: 01c12083 lw ra,28(sp)
|
||||
800004e8: 01812403 lw s0,24(sp)
|
||||
800004ec: 02010113 addi sp,sp,32
|
||||
800004f0: 00008067 ret
|
||||
|
||||
800004f4 <simple_kernel>:
|
||||
800004f4: fe010113 addi sp,sp,-32
|
||||
800004f8: 00112e23 sw ra,28(sp)
|
||||
800004fc: 00812c23 sw s0,24(sp)
|
||||
80000500: 02010413 addi s0,sp,32
|
||||
80000504: b85ff0ef jal ra,80000088 <vx_warpID>
|
||||
80000508: fea42623 sw a0,-20(s0)
|
||||
8000050c: 810007b7 lui a5,0x81000
|
||||
80000510: fec42703 lw a4,-20(s0)
|
||||
80000514: 00271713 slli a4,a4,0x2
|
||||
80000518: 25078793 addi a5,a5,592 # 81000250 <z+0xfffffff0>
|
||||
8000051c: 00f707b3 add a5,a4,a5
|
||||
80000520: fec42703 lw a4,-20(s0)
|
||||
80000524: 00e7a023 sw a4,0(a5)
|
||||
80000528: fec42783 lw a5,-20(s0)
|
||||
8000052c: 00078663 beqz a5,80000538 <simple_kernel+0x44>
|
||||
80000530: 00000513 li a0,0
|
||||
80000534: b35ff0ef jal ra,80000068 <vx_tmc>
|
||||
80000538: 00000013 nop
|
||||
8000053c: 01c12083 lw ra,28(sp)
|
||||
80000540: 01812403 lw s0,24(sp)
|
||||
80000544: 02010113 addi sp,sp,32
|
||||
80000548: 00008067 ret
|
||||
|
||||
8000054c <test_wsapwn>:
|
||||
8000054c: fe010113 addi sp,sp,-32
|
||||
80000550: 00112e23 sw ra,28(sp)
|
||||
80000554: 00812c23 sw s0,24(sp)
|
||||
80000558: 02010413 addi s0,sp,32
|
||||
8000055c: 800007b7 lui a5,0x80000
|
||||
80000560: 4f478793 addi a5,a5,1268 # 800004f4 <z+0xff000294>
|
||||
80000564: fef42623 sw a5,-20(s0)
|
||||
80000568: fec42583 lw a1,-20(s0)
|
||||
8000056c: 00400513 li a0,4
|
||||
80000570: af1ff0ef jal ra,80000060 <vx_wspawn>
|
||||
80000574: f81ff0ef jal ra,800004f4 <simple_kernel>
|
||||
80000578: 810007b7 lui a5,0x81000
|
||||
8000057c: 2507a783 lw a5,592(a5) # 81000250 <z+0xfffffff0>
|
||||
80000580: 00078513 mv a0,a5
|
||||
80000584: b91ff0ef jal ra,80000114 <vx_print_hex>
|
||||
80000588: 810007b7 lui a5,0x81000
|
||||
8000058c: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
80000590: b49ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000594: 810007b7 lui a5,0x81000
|
||||
80000598: 25078793 addi a5,a5,592 # 81000250 <z+0xfffffff0>
|
||||
8000059c: 0047a783 lw a5,4(a5)
|
||||
800005a0: 00078513 mv a0,a5
|
||||
800005a4: b71ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800005a8: 810007b7 lui a5,0x81000
|
||||
800005ac: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
800005b0: b29ff0ef jal ra,800000d8 <vx_print_str>
|
||||
800005b4: 810007b7 lui a5,0x81000
|
||||
800005b8: 25078793 addi a5,a5,592 # 81000250 <z+0xfffffff0>
|
||||
800005bc: 0087a783 lw a5,8(a5)
|
||||
800005c0: 00078513 mv a0,a5
|
||||
800005c4: b51ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800005c8: 810007b7 lui a5,0x81000
|
||||
800005cc: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
800005d0: b09ff0ef jal ra,800000d8 <vx_print_str>
|
||||
800005d4: 810007b7 lui a5,0x81000
|
||||
800005d8: 25078793 addi a5,a5,592 # 81000250 <z+0xfffffff0>
|
||||
800005dc: 00c7a783 lw a5,12(a5)
|
||||
800005e0: 00078513 mv a0,a5
|
||||
800005e4: b31ff0ef jal ra,80000114 <vx_print_hex>
|
||||
800005e8: 810007b7 lui a5,0x81000
|
||||
800005ec: 09078513 addi a0,a5,144 # 81000090 <z+0xfffffe30>
|
||||
800005f0: ae9ff0ef jal ra,800000d8 <vx_print_str>
|
||||
800005f4: 00000013 nop
|
||||
800005f8: 01c12083 lw ra,28(sp)
|
||||
800005fc: 01812403 lw s0,24(sp)
|
||||
80000600: 02010113 addi sp,sp,32
|
||||
80000604: 00008067 ret
|
||||
|
||||
80000608 <intrinsics_tests>:
|
||||
80000608: ff010113 addi sp,sp,-16
|
||||
8000060c: 00112623 sw ra,12(sp)
|
||||
80000610: 00812423 sw s0,8(sp)
|
||||
80000614: 01010413 addi s0,sp,16
|
||||
80000618: c6dff0ef jal ra,80000284 <test_tmc>
|
||||
8000061c: 810007b7 lui a5,0x81000
|
||||
80000620: 09478513 addi a0,a5,148 # 81000094 <z+0xfffffe34>
|
||||
80000624: ab5ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000628: 00400513 li a0,4
|
||||
8000062c: a3dff0ef jal ra,80000068 <vx_tmc>
|
||||
80000630: d35ff0ef jal ra,80000364 <test_divergence>
|
||||
80000634: 00100513 li a0,1
|
||||
80000638: a31ff0ef jal ra,80000068 <vx_tmc>
|
||||
8000063c: 810007b7 lui a5,0x81000
|
||||
80000640: 0a878513 addi a0,a5,168 # 810000a8 <z+0xfffffe48>
|
||||
80000644: a95ff0ef jal ra,800000d8 <vx_print_str>
|
||||
80000648: f05ff0ef jal ra,8000054c <test_wsapwn>
|
||||
8000064c: 00000013 nop
|
||||
80000650: 00c12083 lw ra,12(sp)
|
||||
80000654: 00812403 lw s0,8(sp)
|
||||
80000658: 01010113 addi sp,sp,16
|
||||
8000065c: 00008067 ret
|
||||
|
||||
80000660 <mat_add_kernel>:
|
||||
80000660: fc010113 addi sp,sp,-64
|
||||
80000664: 02112e23 sw ra,60(sp)
|
||||
80000668: 02812c23 sw s0,56(sp)
|
||||
8000066c: 04010413 addi s0,sp,64
|
||||
80000670: fca42623 sw a0,-52(s0)
|
||||
80000674: fcc42783 lw a5,-52(s0)
|
||||
80000678: fef42623 sw a5,-20(s0)
|
||||
8000067c: a0dff0ef jal ra,80000088 <vx_warpID>
|
||||
80000680: fea42423 sw a0,-24(s0)
|
||||
80000684: a0dff0ef jal ra,80000090 <vx_threadID>
|
||||
80000688: fea42223 sw a0,-28(s0)
|
||||
8000068c: fec42783 lw a5,-20(s0)
|
||||
80000690: 0107a783 lw a5,16(a5)
|
||||
80000694: fe842703 lw a4,-24(s0)
|
||||
80000698: 00f77e63 bgeu a4,a5,800006b4 <mat_add_kernel+0x54>
|
||||
8000069c: fec42783 lw a5,-20(s0)
|
||||
800006a0: 00c7a783 lw a5,12(a5)
|
||||
800006a4: fe442703 lw a4,-28(s0)
|
||||
800006a8: 00f77663 bgeu a4,a5,800006b4 <mat_add_kernel+0x54>
|
||||
800006ac: 00100793 li a5,1
|
||||
800006b0: 0080006f j 800006b8 <mat_add_kernel+0x58>
|
||||
800006b4: 00000793 li a5,0
|
||||
800006b8: fef401a3 sb a5,-29(s0)
|
||||
800006bc: fe344783 lbu a5,-29(s0)
|
||||
800006c0: 0017f793 andi a5,a5,1
|
||||
800006c4: fef401a3 sb a5,-29(s0)
|
||||
800006c8: fe344783 lbu a5,-29(s0)
|
||||
800006cc: 00078513 mv a0,a5
|
||||
800006d0: 9a9ff0ef jal ra,80000078 <vx_split>
|
||||
800006d4: fe344783 lbu a5,-29(s0)
|
||||
800006d8: 06078663 beqz a5,80000744 <mat_add_kernel+0xe4>
|
||||
800006dc: fec42783 lw a5,-20(s0)
|
||||
800006e0: 00c7a703 lw a4,12(a5)
|
||||
800006e4: fe842783 lw a5,-24(s0)
|
||||
800006e8: 02f707b3 mul a5,a4,a5
|
||||
800006ec: fe442703 lw a4,-28(s0)
|
||||
800006f0: 00f707b3 add a5,a4,a5
|
||||
800006f4: fcf42e23 sw a5,-36(s0)
|
||||
800006f8: fec42783 lw a5,-20(s0)
|
||||
800006fc: 0007a703 lw a4,0(a5)
|
||||
80000700: fdc42783 lw a5,-36(s0)
|
||||
80000704: 00279793 slli a5,a5,0x2
|
||||
80000708: 00f707b3 add a5,a4,a5
|
||||
8000070c: 0007a683 lw a3,0(a5)
|
||||
80000710: fec42783 lw a5,-20(s0)
|
||||
80000714: 0047a703 lw a4,4(a5)
|
||||
80000718: fdc42783 lw a5,-36(s0)
|
||||
8000071c: 00279793 slli a5,a5,0x2
|
||||
80000720: 00f707b3 add a5,a4,a5
|
||||
80000724: 0007a703 lw a4,0(a5)
|
||||
80000728: fec42783 lw a5,-20(s0)
|
||||
8000072c: 0087a603 lw a2,8(a5)
|
||||
80000730: fdc42783 lw a5,-36(s0)
|
||||
80000734: 00279793 slli a5,a5,0x2
|
||||
80000738: 00f607b3 add a5,a2,a5
|
||||
8000073c: 00e68733 add a4,a3,a4
|
||||
80000740: 00e7a023 sw a4,0(a5)
|
||||
80000744: 93dff0ef jal ra,80000080 <vx_join>
|
||||
80000748: 00000013 nop
|
||||
8000074c: 03c12083 lw ra,60(sp)
|
||||
80000750: 03812403 lw s0,56(sp)
|
||||
80000754: 04010113 addi sp,sp,64
|
||||
80000758: 00008067 ret
|
||||
|
||||
8000075c <main>:
|
||||
8000075c: ff010113 addi sp,sp,-16
|
||||
80000760: 00112623 sw ra,12(sp)
|
||||
80000764: 00812423 sw s0,8(sp)
|
||||
80000768: 01010413 addi s0,sp,16
|
||||
8000076c: 00100513 li a0,1
|
||||
80000770: 8f9ff0ef jal ra,80000068 <vx_tmc>
|
||||
80000774: e95ff0ef jal ra,80000608 <intrinsics_tests>
|
||||
80000778: 00000793 li a5,0
|
||||
8000077c: 00078513 mv a0,a5
|
||||
80000780: 00c12083 lw ra,12(sp)
|
||||
80000784: 00812403 lw s0,8(sp)
|
||||
80000788: 01010113 addi sp,sp,16
|
||||
8000078c: 00008067 ret
|
||||
|
||||
Disassembly of section .rodata:
|
||||
|
||||
81000000 <.rodata>:
|
||||
81000000: 0030 addi a2,sp,8
|
||||
81000002: 0000 unimp
|
||||
81000004: 0031 c.nop 12
|
||||
81000006: 0000 unimp
|
||||
81000008: 0032 c.slli zero,0xc
|
||||
8100000a: 0000 unimp
|
||||
8100000c: 00000033 add zero,zero,zero
|
||||
81000010: 0034 addi a3,sp,8
|
||||
81000012: 0000 unimp
|
||||
81000014: 0035 c.nop 13
|
||||
81000016: 0000 unimp
|
||||
81000018: 0036 c.slli zero,0xd
|
||||
8100001a: 0000 unimp
|
||||
8100001c: 00000037 lui zero,0x0
|
||||
81000020: 0038 addi a4,sp,8
|
||||
81000022: 0000 unimp
|
||||
81000024: 0039 c.nop 14
|
||||
81000026: 0000 unimp
|
||||
81000028: 0061 c.nop 24
|
||||
8100002a: 0000 unimp
|
||||
8100002c: 0062 c.slli zero,0x18
|
||||
8100002e: 0000 unimp
|
||||
81000030: 00000063 beqz zero,81000030 <main+0xfff8d4>
|
||||
81000034: 0064 addi s1,sp,12
|
||||
81000036: 0000 unimp
|
||||
81000038: 0065 c.nop 25
|
||||
8100003a: 0000 unimp
|
||||
8100003c: 0066 c.slli zero,0x19
|
||||
8100003e: 0000 unimp
|
||||
81000040: 000a c.slli zero,0x2
|
||||
81000042: 0000 unimp
|
||||
81000044: 0030 addi a2,sp,8
|
||||
81000046: 0000 unimp
|
||||
81000048: 0031 c.nop 12
|
||||
8100004a: 0000 unimp
|
||||
8100004c: 0032 c.slli zero,0xc
|
||||
8100004e: 0000 unimp
|
||||
81000050: 00000033 add zero,zero,zero
|
||||
81000054: 0034 addi a3,sp,8
|
||||
81000056: 0000 unimp
|
||||
81000058: 0035 c.nop 13
|
||||
8100005a: 0000 unimp
|
||||
8100005c: 0036 c.slli zero,0xd
|
||||
8100005e: 0000 unimp
|
||||
81000060: 00000037 lui zero,0x0
|
||||
81000064: 0038 addi a4,sp,8
|
||||
81000066: 0000 unimp
|
||||
81000068: 0039 c.nop 14
|
||||
8100006a: 0000 unimp
|
||||
8100006c: 0061 c.nop 24
|
||||
8100006e: 0000 unimp
|
||||
81000070: 0062 c.slli zero,0x18
|
||||
81000072: 0000 unimp
|
||||
81000074: 00000063 beqz zero,81000074 <main+0xfff918>
|
||||
81000078: 0064 addi s1,sp,12
|
||||
8100007a: 0000 unimp
|
||||
8100007c: 0065 c.nop 25
|
||||
8100007e: 0000 unimp
|
||||
81000080: 0066 c.slli zero,0x19
|
||||
81000082: 0000 unimp
|
||||
81000084: 6574 flw fa3,76(a0)
|
||||
81000086: 745f7473 csrrci s0,0x745,30
|
||||
8100008a: 636d lui t1,0x1b
|
||||
8100008c: 000a c.slli zero,0x2
|
||||
8100008e: 0000 unimp
|
||||
81000090: 000a c.slli zero,0x2
|
||||
81000092: 0000 unimp
|
||||
81000094: 6574 flw fa3,76(a0)
|
||||
81000096: 645f7473 csrrci s0,0x645,30
|
||||
8100009a: 7669 lui a2,0xffffa
|
||||
8100009c: 7265 lui tp,0xffff9
|
||||
8100009e: 636e6567 0x636e6567
|
||||
810000a2: 0a65 addi s4,s4,25
|
||||
810000a4: 0000 unimp
|
||||
810000a6: 0000 unimp
|
||||
810000a8: 6574 flw fa3,76(a0)
|
||||
810000aa: 735f7473 csrrci s0,0x735,30
|
||||
810000ae: 6170 flw fa2,68(a0)
|
||||
810000b0: 000a6e77 0xa6e77
|
||||
810000b4: 0030 addi a2,sp,8
|
||||
810000b6: 0000 unimp
|
||||
810000b8: 0031 c.nop 12
|
||||
810000ba: 0000 unimp
|
||||
810000bc: 0032 c.slli zero,0xc
|
||||
810000be: 0000 unimp
|
||||
810000c0: 00000033 add zero,zero,zero
|
||||
810000c4: 0034 addi a3,sp,8
|
||||
810000c6: 0000 unimp
|
||||
810000c8: 0035 c.nop 13
|
||||
810000ca: 0000 unimp
|
||||
810000cc: 0036 c.slli zero,0xd
|
||||
810000ce: 0000 unimp
|
||||
810000d0: 00000037 lui zero,0x0
|
||||
810000d4: 0038 addi a4,sp,8
|
||||
810000d6: 0000 unimp
|
||||
810000d8: 0039 c.nop 14
|
||||
810000da: 0000 unimp
|
||||
810000dc: 0061 c.nop 24
|
||||
810000de: 0000 unimp
|
||||
810000e0: 0062 c.slli zero,0x18
|
||||
810000e2: 0000 unimp
|
||||
810000e4: 00000063 beqz zero,810000e4 <main+0xfff988>
|
||||
810000e8: 0064 addi s1,sp,12
|
||||
810000ea: 0000 unimp
|
||||
810000ec: 0065 c.nop 25
|
||||
810000ee: 0000 unimp
|
||||
810000f0: 0066 c.slli zero,0x19
|
||||
|
||||
Disassembly of section .data:
|
||||
|
||||
810000f4 <hextoa>:
|
||||
810000f4: 0000 unimp
|
||||
810000f6: 8100 0x8100
|
||||
810000f8: 0004 0x4
|
||||
810000fa: 8100 0x8100
|
||||
810000fc: 0008 0x8
|
||||
810000fe: 8100 0x8100
|
||||
81000100: 000c 0xc
|
||||
81000102: 8100 0x8100
|
||||
81000104: 0010 0x10
|
||||
81000106: 8100 0x8100
|
||||
81000108: 0014 0x14
|
||||
8100010a: 8100 0x8100
|
||||
8100010c: 0018 0x18
|
||||
8100010e: 8100 0x8100
|
||||
81000110: 001c 0x1c
|
||||
81000112: 8100 0x8100
|
||||
81000114: 0020 addi s0,sp,8
|
||||
81000116: 8100 0x8100
|
||||
81000118: 0024 addi s1,sp,8
|
||||
8100011a: 8100 0x8100
|
||||
8100011c: 0028 addi a0,sp,8
|
||||
8100011e: 8100 0x8100
|
||||
81000120: 002c addi a1,sp,8
|
||||
81000122: 8100 0x8100
|
||||
81000124: 0030 addi a2,sp,8
|
||||
81000126: 8100 0x8100
|
||||
81000128: 0034 addi a3,sp,8
|
||||
8100012a: 8100 0x8100
|
||||
8100012c: 0038 addi a4,sp,8
|
||||
8100012e: 8100 0x8100
|
||||
81000130: 003c addi a5,sp,8
|
||||
81000132: 8100 0x8100
|
||||
|
||||
81000134 <hextoa>:
|
||||
81000134: 0044 addi s1,sp,4
|
||||
81000136: 8100 0x8100
|
||||
81000138: 0048 addi a0,sp,4
|
||||
8100013a: 8100 0x8100
|
||||
8100013c: 004c addi a1,sp,4
|
||||
8100013e: 8100 0x8100
|
||||
81000140: 0050 addi a2,sp,4
|
||||
81000142: 8100 0x8100
|
||||
81000144: 0054 addi a3,sp,4
|
||||
81000146: 8100 0x8100
|
||||
81000148: 0058 addi a4,sp,4
|
||||
8100014a: 8100 0x8100
|
||||
8100014c: 005c addi a5,sp,4
|
||||
8100014e: 8100 0x8100
|
||||
81000150: 0060 addi s0,sp,12
|
||||
81000152: 8100 0x8100
|
||||
81000154: 0064 addi s1,sp,12
|
||||
81000156: 8100 0x8100
|
||||
81000158: 0068 addi a0,sp,12
|
||||
8100015a: 8100 0x8100
|
||||
8100015c: 006c addi a1,sp,12
|
||||
8100015e: 8100 0x8100
|
||||
81000160: 0070 addi a2,sp,12
|
||||
81000162: 8100 0x8100
|
||||
81000164: 0074 addi a3,sp,12
|
||||
81000166: 8100 0x8100
|
||||
81000168: 0078 addi a4,sp,12
|
||||
8100016a: 8100 0x8100
|
||||
8100016c: 007c addi a5,sp,12
|
||||
8100016e: 8100 0x8100
|
||||
81000170: 0080 addi s0,sp,64
|
||||
81000172: 8100 0x8100
|
||||
|
||||
81000174 <hextoa>:
|
||||
81000174: 00b4 addi a3,sp,72
|
||||
81000176: 8100 0x8100
|
||||
81000178: 00b8 addi a4,sp,72
|
||||
8100017a: 8100 0x8100
|
||||
8100017c: 00bc addi a5,sp,72
|
||||
8100017e: 8100 0x8100
|
||||
81000180: 00c0 addi s0,sp,68
|
||||
81000182: 8100 0x8100
|
||||
81000184: 00c4 addi s1,sp,68
|
||||
81000186: 8100 0x8100
|
||||
81000188: 00c8 addi a0,sp,68
|
||||
8100018a: 8100 0x8100
|
||||
8100018c: 00cc addi a1,sp,68
|
||||
8100018e: 8100 0x8100
|
||||
81000190: 00d0 addi a2,sp,68
|
||||
81000192: 8100 0x8100
|
||||
81000194: 00d4 addi a3,sp,68
|
||||
81000196: 8100 0x8100
|
||||
81000198: 00d8 addi a4,sp,68
|
||||
8100019a: 8100 0x8100
|
||||
8100019c: 00dc addi a5,sp,68
|
||||
8100019e: 8100 0x8100
|
||||
810001a0: 00e0 addi s0,sp,76
|
||||
810001a2: 8100 0x8100
|
||||
810001a4: 00e4 addi s1,sp,76
|
||||
810001a6: 8100 0x8100
|
||||
810001a8: 00e8 addi a0,sp,76
|
||||
810001aa: 8100 0x8100
|
||||
810001ac: 00ec addi a1,sp,76
|
||||
810001ae: 8100 0x8100
|
||||
810001b0: 00f0 addi a2,sp,76
|
||||
810001b2: 8100 0x8100
|
||||
|
||||
810001b4 <x>:
|
||||
810001b4: 0005 c.nop 1
|
||||
810001b6: 0000 unimp
|
||||
810001b8: 0005 c.nop 1
|
||||
810001ba: 0000 unimp
|
||||
810001bc: 0005 c.nop 1
|
||||
810001be: 0000 unimp
|
||||
810001c0: 0005 c.nop 1
|
||||
810001c2: 0000 unimp
|
||||
810001c4: 0006 c.slli zero,0x1
|
||||
810001c6: 0000 unimp
|
||||
810001c8: 0006 c.slli zero,0x1
|
||||
810001ca: 0000 unimp
|
||||
810001cc: 0006 c.slli zero,0x1
|
||||
810001ce: 0000 unimp
|
||||
810001d0: 0006 c.slli zero,0x1
|
||||
810001d2: 0000 unimp
|
||||
810001d4: 00000007 0x7
|
||||
810001d8: 00000007 0x7
|
||||
810001dc: 00000007 0x7
|
||||
810001e0: 00000007 0x7
|
||||
810001e4: 0008 0x8
|
||||
810001e6: 0000 unimp
|
||||
810001e8: 0008 0x8
|
||||
810001ea: 0000 unimp
|
||||
810001ec: 0008 0x8
|
||||
810001ee: 0000 unimp
|
||||
810001f0: 0008 0x8
|
||||
...
|
||||
|
||||
810001f4 <y>:
|
||||
810001f4: 0001 nop
|
||||
810001f6: 0000 unimp
|
||||
810001f8: 0001 nop
|
||||
810001fa: 0000 unimp
|
||||
810001fc: 0001 nop
|
||||
810001fe: 0000 unimp
|
||||
81000200: 0001 nop
|
||||
81000202: 0000 unimp
|
||||
81000204: 0001 nop
|
||||
81000206: 0000 unimp
|
||||
81000208: 0001 nop
|
||||
8100020a: 0000 unimp
|
||||
8100020c: 0001 nop
|
||||
8100020e: 0000 unimp
|
||||
81000210: 0001 nop
|
||||
81000212: 0000 unimp
|
||||
81000214: 0001 nop
|
||||
81000216: 0000 unimp
|
||||
81000218: 0001 nop
|
||||
8100021a: 0000 unimp
|
||||
8100021c: 0001 nop
|
||||
8100021e: 0000 unimp
|
||||
81000220: 0001 nop
|
||||
81000222: 0000 unimp
|
||||
81000224: 0001 nop
|
||||
81000226: 0000 unimp
|
||||
81000228: 0001 nop
|
||||
8100022a: 0000 unimp
|
||||
8100022c: 0001 nop
|
||||
8100022e: 0000 unimp
|
||||
81000230: 0001 nop
|
||||
...
|
||||
|
||||
Disassembly of section .bss:
|
||||
|
||||
81000234 <global_argument_struct>:
|
||||
81000234: 0000 unimp
|
||||
...
|
||||
|
||||
81000238 <global_function_pointer>:
|
||||
81000238: 0000 unimp
|
||||
...
|
||||
|
||||
8100023c <global_num_threads>:
|
||||
8100023c: 0000 unimp
|
||||
...
|
||||
|
||||
81000240 <arr>:
|
||||
...
|
||||
|
||||
81000250 <wsapwn_arr>:
|
||||
...
|
||||
|
||||
81000260 <z>:
|
||||
...
|
||||
|
||||
Disassembly of section .comment:
|
||||
|
||||
82000000 <.comment>:
|
||||
82000000: 3a434347 fmsub.d ft6,ft6,ft4,ft7,rmm
|
||||
82000004: 2820 fld fs0,80(s0)
|
||||
82000006: 29554e47 fmsub.s ft8,fa0,fs5,ft5,rmm
|
||||
8200000a: 3820 fld fs0,112(s0)
|
||||
8200000c: 322e fld ft4,232(sp)
|
||||
8200000e: 302e fld ft0,232(sp)
|
||||
...
|
Binary file not shown.
|
@ -1,161 +0,0 @@
|
|||
:0200000480007A
|
||||
:100000009705000093850502130540006B10B500AD
|
||||
:10001000EF000001EF008074130500006B00050085
|
||||
:10002000130540006B000500F32610029396A6010D
|
||||
:10003000732600029315A6001316260037F1FF6FF2
|
||||
:100040003301B1403301D1403301C100F326100226
|
||||
:1000500063860600130500006B0005006780000042
|
||||
:100060006B10B500678000006B0005006780000022
|
||||
:100070006B40B500678000006B20050067800000C2
|
||||
:100080006B3000006780000073251002678000005D
|
||||
:100090007325000267800000130540006B00050017
|
||||
:1000A000F32610029396F600732600029315A6001D
|
||||
:1000B0001316260037F1FF6F3301B1403301D140F1
|
||||
:1000C0003301C100F3261002638606001305000009
|
||||
:1000D0006B00050067800000130141FF2320110021
|
||||
:1000E0002322B1008345050063880500EF00C001AD
|
||||
:1000F000130515006FF01FFF8320010083254100C9
|
||||
:100100001301C10067800000B702010023A0B20004
|
||||
:1001100067800000130101FE232E1100232C8100B3
|
||||
:10012000130401022326A4FEB70700810327C4FE9F
|
||||
:10013000131727009387470FB307F70083A707001C
|
||||
:1001400013850700EFF05FF9130000008320C10161
|
||||
:10015000032481011301010267800000130101FEE5
|
||||
:10016000232E1100232C8100130401022326A4FE58
|
||||
:100170002324B4FE0325C4FEEFF01FF6032584FEFE
|
||||
:10018000EFF05FF9B707008113850704EFF0DFF4A4
|
||||
:10019000130000008320C101032481011301010227
|
||||
:1001A00067800000130101FE232E1100232C810023
|
||||
:1001B00013040102B707008183A7C7231385070033
|
||||
:1001C000EFF09FEAB707008103A78723B7070081F5
|
||||
:1001D00083A7472313850700E7000700EFF0DFEA56
|
||||
:1001E0002326A4FE8327C4FE6388070013050000AE
|
||||
:1001F000EFF09FE76F00C00013051000EFF0DFE69F
|
||||
:10020000130000008320C1010324810113010102B6
|
||||
:1002100067800000130101FE232E1100232C8100B2
|
||||
:10022000130401022326A4FE2324B4FE2322C4FEC9
|
||||
:100230002320D4FEB7070081032744FE23ACE72226
|
||||
:10024000B7070081032704FE23AAE722B70700812E
|
||||
:10025000032784FE23AEE722B70700809387471A5F
|
||||
:10026000938507000325C4FEEFF09FDFEFF09FF3B7
|
||||
:10027000130000008320C101032481011301010246
|
||||
:1002800067800000130101FE232E1100232C810042
|
||||
:1002900013040102B707008113854708EFF0DFE37D
|
||||
:1002A00013054000EFF05FDCEFF09FDE2326A4FE95
|
||||
:1002B0000327C4FEB70700818326C4FE9396260059
|
||||
:1002C00093870724B387F60023A0E70013051000E7
|
||||
:1002D000EFF09FD9B707008183A707241385070094
|
||||
:1002E000EFF05FE3B707008113850709EFF0DFDE6A
|
||||
:1002F000B70700819387072483A74700138507006A
|
||||
:10030000EFF05FE1B707008113850709EFF0DFDC4D
|
||||
:10031000B70700819387072483A787001385070009
|
||||
:10032000EFF05FDFB707008113850709EFF0DFDA31
|
||||
:10033000B70700819387072483A7C70013850700A9
|
||||
:10034000EFF05FDDB707008113850709EFF0DFD815
|
||||
:10035000130000008320C101032481011301010265
|
||||
:1003600067800000130101FE232E1100232C810061
|
||||
:1003700013040102EFF0DFD12326A4FE8327C4FE7D
|
||||
:1003800093B72700A305F4FE8347B4FE1385070047
|
||||
:10039000EFF09FCE8347B4FE638407068327C4FE35
|
||||
:1003A00093B717002305F4FE8347A4FE13850700C7
|
||||
:1003B000EFF09FCC8347A4FE63820702B70700815A
|
||||
:1003C0000327C4FE1317270093870724B307F700FA
|
||||
:1003D0001307A00023A0E7006F000002B707008109
|
||||
:1003E0000327C4FE1317270093870724B307F700DA
|
||||
:1003F0001307B00023A0E700EFF09FC86F0040068E
|
||||
:100400008327C4FE93B73700A304F4FE834794FE0A
|
||||
:1004100013850700EFF05FC6834794FE63820702EF
|
||||
:10042000B70700810327C4FE13172700938707240B
|
||||
:10043000B307F7001307C00023A0E7006F00000216
|
||||
:10044000B70700810327C4FE1317270093870724EB
|
||||
:10045000B307F7001307D00023A0E700EFF05FC257
|
||||
:10046000EFF01FC2B707008183A707241385070099
|
||||
:10047000EFF05FCAB707008113850709EFF0DFC50A
|
||||
:10048000B70700819387072483A7470013850700D8
|
||||
:10049000EFF05FC8B707008113850709EFF0DFC3EE
|
||||
:1004A000B70700819387072483A787001385070078
|
||||
:1004B000EFF05FC6B707008113850709EFF0DFC1D2
|
||||
:1004C000B70700819387072483A7C7001385070018
|
||||
:1004D000EFF05FC4B707008113850709EFF0DFBFB6
|
||||
:1004E000130000008320C1010324810113010102D4
|
||||
:1004F00067800000130101FE232E1100232C8100D0
|
||||
:1005000013040102EFF05FB82326A4FEB7070081B1
|
||||
:100510000327C4FE1317270093870725B307F700A7
|
||||
:100520000327C4FE23A0E7008327C4FE63860700D9
|
||||
:1005300013050000EFF05FB3130000008320C1013A
|
||||
:10054000032481011301010267800000130101FEF1
|
||||
:10055000232E1100232C810013040102B707008011
|
||||
:100560009387474F2326F4FE8325C4FE13054000DE
|
||||
:10057000EFF01FAFEFF01FF8B707008183A7072543
|
||||
:1005800013850700EFF01FB9B7070081138507092E
|
||||
:10059000EFF09FB4B70700819387072583A7470033
|
||||
:1005A00013850700EFF01FB7B70700811385070910
|
||||
:1005B000EFF09FB2B70700819387072583A78700D5
|
||||
:1005C00013850700EFF01FB5B707008113850709F2
|
||||
:1005D000EFF09FB0B70700819387072583A7C70077
|
||||
:1005E00013850700EFF01FB3B707008113850709D4
|
||||
:1005F000EFF09FAE130000008320C10103248101AE
|
||||
:100600001301010267800000130101FF232611007E
|
||||
:100610002324810013040101EFF0DFC6B707008136
|
||||
:1006200013854709EFF05FAB13054000EFF0DFA340
|
||||
:10063000EFF05FD313051000EFF01FA3B7070081A1
|
||||
:100640001385870AEFF05FA9EFF05FF01300000059
|
||||
:100650008320C10003248100130101016780000091
|
||||
:10066000130101FC232E1102232C81021304010427
|
||||
:100670002326A4FC8327C4FC2326F4FEEFF0DFA08E
|
||||
:100680002324A4FEEFF0DFA02322A4FE8327C4FED0
|
||||
:1006900083A70701032784FE637EF7008327C4FE38
|
||||
:1006A00083A7C700032744FE6376F7009307100073
|
||||
:1006B0006F00800093070000A301F4FE834734FE1F
|
||||
:1006C00093F71700A301F4FE834734FE1385070058
|
||||
:1006D000EFF09F9A834734FE638607068327C4FEA4
|
||||
:1006E00003A7C700832784FEB307F702032744FE4E
|
||||
:1006F000B307F700232EF4FC8327C4FE03A70700EB
|
||||
:100700008327C4FD93972700B307F70083A607004C
|
||||
:100710008327C4FE03A747008327C4FD93972700C0
|
||||
:10072000B307F70003A707008327C4FE03A68700CB
|
||||
:100730008327C4FD93972700B307F6003387E600AD
|
||||
:1007400023A0E700EFF0DF93130000008320C10334
|
||||
:10075000032481031301010467800000130101FFDA
|
||||
:100760002326110023248100130401011305100026
|
||||
:10077000EFF09F8FEFF05FE993070000138507000C
|
||||
:100780008320C10003248100130101016780000060
|
||||
:02000004810079
|
||||
:10000000300000003100000032000000330000002A
|
||||
:10001000340000003500000036000000370000000A
|
||||
:10002000380000003900000061000000620000009C
|
||||
:10003000630000006400000065000000660000002E
|
||||
:100040000A00000030000000310000003200000013
|
||||
:1000500033000000340000003500000036000000CE
|
||||
:100060003700000038000000390000006100000087
|
||||
:1000700062000000630000006400000065000000F2
|
||||
:1000800066000000746573745F746D630A0000009D
|
||||
:100090000A000000746573745F6469766572676551
|
||||
:1000A0006E63650A00000000746573745F737061AD
|
||||
:1000B000776E0A00300000003100000032000000BE
|
||||
:1000C000330000003400000035000000360000005E
|
||||
:1000D0003700000038000000390000006100000017
|
||||
:1000E0006200000063000000640000006500000082
|
||||
:0200F0006600A8
|
||||
:1000F4000000008104000081080000810C000081E0
|
||||
:100104001000008114000081180000811C0000818F
|
||||
:100114002000008124000081280000812C0000813F
|
||||
:100124003000008134000081380000813C000081EF
|
||||
:1001340044000081480000814C000081500000818F
|
||||
:1001440054000081580000815C000081600000813F
|
||||
:1001540064000081680000816C00008170000081EF
|
||||
:1001640074000081780000817C000081800000819F
|
||||
:10017400B4000081B8000081BC000081C00000818F
|
||||
:10018400C4000081C8000081CC000081D00000813F
|
||||
:10019400D4000081D8000081DC000081E0000081EF
|
||||
:1001A400E4000081E8000081EC000081F00000819F
|
||||
:1001B4000500000005000000050000000500000027
|
||||
:1001C4000600000006000000060000000600000013
|
||||
:1001D40007000000070000000700000007000000FF
|
||||
:1001E40008000000080000000800000008000000EB
|
||||
:1001F40001000000010000000100000001000000F7
|
||||
:1002040001000000010000000100000001000000E6
|
||||
:1002140001000000010000000100000001000000D6
|
||||
:1002240001000000010000000100000001000000C6
|
||||
:040000058000000077
|
||||
:00000001FF
|
|
@ -1,88 +0,0 @@
|
|||
|
||||
#include "intrinsics/vx_intrinsics.h"
|
||||
#include "io/vx_io.h"
|
||||
#include "tests/tests.h"
|
||||
#include "vx_api/vx_api.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
unsigned * x;
|
||||
unsigned * y;
|
||||
unsigned * z;
|
||||
unsigned numColums;
|
||||
unsigned numRows;
|
||||
} mat_add_args_t;
|
||||
|
||||
|
||||
unsigned x[] = {5, 5, 5, 5,
|
||||
6, 6, 6, 6,
|
||||
7, 7, 7, 7,
|
||||
8, 8, 8, 8};
|
||||
|
||||
unsigned y[] = {1, 1, 1, 1,
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1,
|
||||
1, 1, 1, 1};
|
||||
|
||||
unsigned z[] = {0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0,
|
||||
0, 0, 0, 0};
|
||||
|
||||
void mat_add_kernel(void * void_arguments)
|
||||
{
|
||||
mat_add_args_t * arguments = (mat_add_args_t *) void_arguments;
|
||||
|
||||
unsigned wid = vx_warpID();
|
||||
unsigned tid = vx_threadID();
|
||||
|
||||
bool valid = (wid < arguments->numRows) && (tid < arguments->numColums);
|
||||
|
||||
__if (valid)
|
||||
{
|
||||
unsigned index = (wid * arguments->numColums) + tid;
|
||||
arguments->z[index] = arguments->x[index] + arguments->y[index];
|
||||
}
|
||||
__endif
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
// Main is called with all threads active of warp 0
|
||||
vx_tmc(1);
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
// mat_add_args_t arguments;
|
||||
// arguments.x = x;
|
||||
// arguments.y = y;
|
||||
// arguments.z = z;
|
||||
// arguments.numColums = 4;
|
||||
// arguments.numRows = 4;
|
||||
|
||||
|
||||
// int numWarps = 4;
|
||||
// int numThreads = 4;
|
||||
|
||||
// vx_spawnWarps(numWarps, numThreads, mat_add_kernel, &arguments);
|
||||
|
||||
// for (int i = 0; i < arguments.numRows; i++)
|
||||
// {
|
||||
// for (int j = 0; j < arguments.numColums; j++)
|
||||
// {
|
||||
// unsigned index = (i * arguments.numColums) + j;
|
||||
// vx_print_hex(z[index]);
|
||||
// vx_print_str(" ");
|
||||
// }
|
||||
// vx_print_str("\n");
|
||||
// }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
intrinsics_tests();
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue