WSPAWN imp + tested

This commit is contained in:
felsabbagh3 2019-10-21 23:35:53 -04:00
parent c21e400f9f
commit 31d3d51392
13 changed files with 2166 additions and 2138 deletions

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -1,406 +1,405 @@
:0200000480007A
:10000000130540006B000500F325000213A5250031
:100010006B20050063060500130650006F0080008A
:10002000130670006B30000073000000938B060015
:10003000130D0700130F01009303050013051000B3
:10004000635C750013010180130305006B5003000E
:10005000130515006FF0DFFE130000001300000011
:100060001300000013000000130000001300000044
:1000700013010F0013050000930F0600938D03007A
:1000000013058000731005021305400073101502DC
:10001000731040F17310103037F1FF7FEF10D00BE9
:10002000130500006B000500938B0600130D0700FD
:10003000130F01009303050013051000635C7500A6
:1000400013010180130305006B5003001305150015
:100050006FF0DFFE1300000013000000130000002B
:1000600013000000130000001300000013010F0034
:1000700013050000930F0600938D0300130000008A
:100080001300000013000000130000001300000024
:100090001300000013000000130000001300000014
:1000A000EBE0BF011300000013000000130000008C
:1000B00013000000130000001300000017050000EB
:1000C0001305451B6B40050017030000130343F69F
:1000D0006B000300678000001702000113028223F7
:1000E0002320020023221200232422002326320090
:1000F00023284200232A5200232C6200232E720060
:1001000023208202232292022324A2022326B20267
:100110002328C202232AD202232CE202232EF20237
:10012000232002052322120523242205232632053B
:1001300023284205232A5205232C6205232E72050B
:1001400023208207232292072324A2072326B20713
:100150002328C207232AD207232CE207232EF207E3
:100160001302100067800000170200011302821AB8
:100170000320020083204200032182008321C20069
:100180000322020183224201032382018323C2014D
:100190000324020283244202032582028325C20231
:1001A0000326020383264203032782038327C20315
:1001B0000328020483284204032982048329C204F9
:1001C000032A0205832A4205032B8205832BC205DD
:1001D000032C0206832C4206032D8206832DC206C1
:1001E000032E0207832E4207032F8207832FC207A5
:1001F0001302000067800000732500026780000082
:100200007325100267800000130101FE232E1100E8
:10021000232C810013040102232604FE6F004003F7
:100220000327C4FEB7170000938747973307F702E9
:10023000B707008193870741B307F70013850700CD
:10024000EF0000448327C4FE938717002326F4FEA3
:100250000327C4FE9307F001E3D4E7FC130000007A
:100260008320C10103248101130101026780000082
:10027000130101FD23261102232481022322A1035D
:10028000130401031300000013070D00B71700004B
:10029000938747973307F702B70700819387074192
:1002A000B307F70013850700EF00405093070500E0
:1002B000638A070213070D00B70700811317270091
:1002C00093878726B307F7001307100023A0E700E2
:1002D00093070D0063960700EFF01FE96F00C0055C
:1002E0007300000013070D00B717000093874797AE
:1002F0003307F702B707008193870741B307F70079
:10030000130784FD9305070013850700EF000040E5
:10031000832704FE138107008327C4FD832584FD02
:10032000032644FE832684FE0327C4FE13850700AC
:10033000EFF0DFCF730000008320C10203248102AD
:10034000032D41021301010367800000130101FB2B
:10035000232611042324810413040105EFF0DFE9AF
:100360002324A4FE93090100930710002326F4FE22
:100370006F00C0080327C4FEB71700009387479794
:100380003307F702B707008193870741B307F700E8
:1003900013850700EF00804193070500639A070467
:1003A0000327C4FEB7170000938747973307F70268
:1003B000B707008193870741B307F700130704FDD0
:1003C0009305070013850700EF004034832784FD61
:1003D00013810700832744FD832504FD0326C4FD04
:1003E000832604FE032744FE13850700EFF0DFCDCC
:1003F0008327C4FE938717002326F4FE8327C4FEB9
:10040000032784FEE3E8E7F613810900EFF0DFCC71
:100410009307020063880704B7070081138507412B
:10042000EF00C03893070500639E0702930784FB23
:1004300093850700B707008113850741EF00002D62
:10044000832704FC138107008327C4FB832584FBD7
:10045000032644FC832684FC0327C4FC1385070081
:10046000EFF0DFBC130000008320C10403248104EB
:100470001301010567800000130101FB232611040D
:100480002324810413040105232EA4FA232CB4FA97
:10049000232AC4FA2328D4FAEFF01FD7EFF0DFD5D0
:1004A0002322A4FE13090100232604FE232404FEB4
:1004B0006F000009B709FFFF33013101832784FE74
:1004C0002326F4FC832784FB2328F4FC93070100F4
:1004D000232AF4FC832744FB232CF4FC832704FB0E
:1004E000232EF4FC8327C4FE2320F4FE0327C4FE3E
:1004F000B7170000938747973307F702B7070081C4
:1005000093870741B307F7001307C4FC930507005F
:1005100013850700EF0000198327C4FE9387170097
:100520002326F4FE8327C4FE032744FE63E4E7008A
:10053000232604FE832784FE938717002324F4FEDA
:10054000032784FE8327C4FBE366F7F61301090043
:10055000EFF0DFDF130000008320C10403248104D7
:100560001301010567800000130101FD232611021C
:100570002324810213040103232EA4FC8325C4FD3C
:10058000B707008113850704EF004035EFF0DFC6A1
:100590002320A4FE232604FE6F008006930710008C
:1005A0002326F4FE232404FE6F00C003B707008156
:1005B000032784FE1317270093878726B307F700C6
:1005C00003A70700930710006318F7008327C4FEF2
:1005D000938717002326F4FE832784FE9387170052
:1005E0002324F4FE032784FE9307F001E3D0E7FC05
:1005F0008325C4FEB70700811385C704EF00002ED2
:100600000327C4FE8327C4FDE36AF7F8232204FE10
:100610006F008002B7070081032744FE13172700ED
:1006200093878726B307F70023A00700832744FE9C
:10063000938717002322F4FE832744FE032704FE3A
:10064000E3EAE7FC130000008320C10203248102D7
:100650001301010367800000130101FF23268100BD
:10066000232471011304010193870B0013850700F4
:100670000324C100832B8100130101016780000066
:1006800093020500130300009303700023A062008F
:1006900023A2620023A4620023A6720023A86200A2
:1006A000678000009302050003A382001303130078
:1006B00023A462001383420183AE420093935E0041
:1006C0003303730003AE05002320C30103AE4500CE
:1006D0002322C30103AE85002324C30103AEC5005A
:1006E0002326C30103AE05012328C30103AE450140
:1006F000232AC301938E1E00130F20036394EE017F
:10070000930E000023A2D20167800000930205002F
:1007100003A3820013000000130000001300000078
:100720001300000013000000130000001303F3FF88
:1007300023A462001383420183AE0200930F2003BF
:10074000138F0E00130F1F006314FF01130F00001F
:1007500023A0E20193935E0033037300032E030092
:1007600023A0C501032E430023A2C501032E83004D
:1007700023A4C501032EC30023A6C501032E030134
:1007800023A8C501032E430123AAC50167800000E9
:100790009302050003A3820013050000130E20033B
:1007A00063146E00130515006780000093020500B6
:1007B00003A3820013050000130E000063146E00F3
:1007C00013051500678000009302050003A3C20013
:1007D00083A3020133B5630067800000130141FF6A
:1007E000232011002322B100834505006388050002
:1007F000EF00C001130515006FF01FFF83200100FB
:10080000832541001301C10067800000B708010083
:1008100023A0B80067800000130101FD2326110208
:100820002324810213040103232EA4FC0327C4FD07
:100830009307F00063E4E702B70700810327C4FDD4
:10084000131727009387871AB307F70083A70700BA
:1008500013850700EFF09FF86F0040079307000231
:100860002326F4FEA30504FE8327C4FE9387C7FF57
:100870000327C4FDB357F70093F7F7002322F4FED4
:10088000832744FE6386070093071000A305F4FE48
:100890008347B4FE63820702B7070081032744FE43
:1008A000131727009387871AB307F70083A707005A
:1008B00013850700EFF09FF28327C4FE9387C7FFDD
:1008C0002326F4FE8327C4FEE340F0FA8320C1020E
:1008D000032481021301010367800000130101FE5C
:1008E000232E1100232C8100130401022326A4FED1
:1008F0002324B4FE0325C4FEEFF05FEE032584FE3F
:10090000EFF09FF1B707008113854709EFF01FED66
:10091000130000008320C10103248101130101029F
:1009200067800000130101FD2326110223248102A8
:1009300013040103232EA4FC232CB4FC232AC4FC9F
:100940002328D4FCB76702810327C4FD23ACE71A30
:10095000B76702819387871B032784FD23A2E700E3
:10096000B76702819387871B032744FD23A4E70011
:10097000B76702819387871B032704FD23A6E7003F
:10098000EFF01F882324A4FE032704FD832784FEA1
:10099000B357F7022326F4FE032704FD832784FEC2
:1009A000B377F702638807008327C4FE9387170095
:1009B0002326F4FEB76702819387871B0327C4FEB3
:1009C00023A8E700032704FD832784FE6362F70260
:1009D000B76702819386871BB7170080138687A4A9
:1009E000832584FE032504FDEFF01FA96F0000029C
:1009F000B76702819386871BB7170080138687A489
:100A0000832504FD032504FDEFF01FA7EFF0CFFEC3
:100A10002322A4FE032704FD832744FE63F8E70096
:100A2000032544FEEFF05FB46F00C000032504FD12
:100A3000EFF09FB3130000008320C1020324810262
:100A40001301010367800000130101FA232E110432
:100A5000232C8104130401062326A4FA2324B4FAC8
:100A6000EFF09FBF232CA4FC832784FD83A70700FE
:100A7000232AF4FC832784FD83A747002328F4FC62
:100A8000832784FD83A787002326F4FC832784FD26
:100A900083A707012326F4FE0327C4FE8327C4FA95
:100AA000B307F7022324F4FE8327C4FE639A0700EA
:100AB000930710002326F4FE8327C4FA2324F4FEB0
:100AC000832784FD83A7C7002324F4FC232204FE8C
:100AD0006F00800D232004FE232E04FC6F0080078E
:100AE000032784FA832784FCB307F7020327C4FD96
:100AF000B307F7002322F4FC032784FC8327C4FDFB
:100B0000B307F702032784FEB307F7002320F4FCA2
:100B1000832744FC93972700032744FDB307F7007E
:100B200003A70700832704FC93972700832604FD6F
:100B3000B387F60083A70700B307F702032704FE75
:100B4000B307F7002320F4FE8327C4FD9387170023
:100B5000232EF4FC0327C4FD832784FCE362F7F80B
:100B6000032784FA832784FC3307F702832784FE54
:100B7000B307F700232EF4FA8327C4FB93972700CB
:100B80000327C4FCB307F700032704FE23A0E700F4
:100B9000832784FE938717002324F4FE832744FED3
:100BA000938717002322F4FE832744FE0327C4FE05
:100BB000E3E2E7F2130000008320C105032481056E
:100BC0001301010667800000130101FC232E1102AE
:100BD000232C810213040104232EA4FC232CB4FC37
:100BE000232AC4FC2328D4FC2326E4FCB767028113
:100BF0000327C4FD23A6E71CB76702819387C71CA0
:100C0000032784FD23A2E700B76702819387C71CEF
:100C1000032744FD23A4E700B76702819387C71C1D
:100C20000327C4FC23A6E700B76702819387C71C8C
:100C3000032704FD23A8E700EFF08FDC2324A4FEA4
:100C40000327C4FC832784FEB357F7022326F4FE50
:100C50000327C4FC832784FEB377F7026388070069
:100C60008327C4FE938717002326F4FEB76702810B
:100C70009387C71C0327C4FE23AAE7000327C4FCED
:100C8000832784FE6362F702B76702819386C71CDD
:100C9000B7170080138607D0832584FE032504FD43
:100CA000EFF08FFD6F000002B76702819386C71CCB
:100CB000B7170080138607D08325C4FC032504FDE5
:100CC000EFF08FFBEFF04FD32322A4FE032704FDA8
:100CD000832744FE63F8E700032544FEEFF0DF8836
:100CE0006F00C000032504FDEFF01F881300000013
:100CF0008320C103032481031301010467800000E2
:100D0000130101FB2326110423248104130401058C
:100D1000232EA4FA232CB4FAEFF01F942320A4FE70
:100D2000832704FE83A70700232EF4FC832704FEF9
:100D300083A74700232CF4FC832704FE83A78700A6
:100D4000232AF4FC832704FE83A747012326F4FE0D
:100D50000327C4FE8327C4FBB307F7022324F4FE52
:100D60008327C4FE639A0700930710002326F4FE2E
:100D70008327C4FB2324F4FE832704FE83A7C70034
:100D80002328F4FC232204FE6F00000C032784FBBD
:100D9000832704FD3307F702832784FEB307F70098
:100DA0002326F4FC032784FE832704FDB337F700D2
:100DB00093F7F70F2324F4FC832784FC93B71700E1
:100DC000A303F4FC834774FC138F0700B71700805C
:100DD000938F47E36B200F007B70FF018327C4FCD8
:100DE000939727000327C4FDB307F70083A60700E6
:100DF0008327C4FC93972700032784FDB307F700DC
:100E000003A707008327C4FC93972700032644FD0C
:100E1000B307F6003387E60023A0E700832784FEAC
:100E2000938717002324F4FEB7170080138E87E3FF
:100E300067000E00130000006B300000832744FEA3
:100E4000938717002322F4FE832744FE0327C4FE62
:100E5000E3EEE7F2130000008320C10403248104C1
:100E60001301010567800000130101FC232E11020C
:100E7000232C810213040104232EA4FC232CB4FC94
:100E8000232AC4FC2328D4FC2326E4FCB767028170
:100E90000327C4FD23A6E71CB76702819387C71CFD
:100EA000032784FD23A2E700B76702819387C71C4D
:100EB000032744FD23A4E700B76702819387C71C7B
:100EC0000327C4FC23A6E700B76702819387C71CEA
:100ED000032704FD23A8E700EFF08FB22324A4FE2C
:100EE0000327C4FC832784FEB357F7022326F4FEAE
:100EF0000327C4FC832784FEB377F70263880700C7
:100F00008327C4FE938717002326F4FEB767028168
:100F10009387C71C0327C4FE23AAE7000327C4FC4A
:100F2000832784FE6362F702B76702819386C71C3A
:100F3000B7170080138607FA832584FE032504FD76
:100F4000EFF08FD36F000002B76702819386C71C52
:100F5000B7170080138607FA8325C4FC032504FD18
:100F6000EFF08FD1EFF04FA92322A4FE032704FD59
:100F7000832744FE63F8E700032544FEEFF0CFDE4D
:100F80006F00C000032504FDEFF00FDE130000002A
:100F90008320C1030324810313010104678000003F
:100FA000130101FB232611042324810413040105EA
:100FB000232EA4FA232CB4FAEFF00FEA2320A4FE88
:100FC000832704FE83A70700232EF4FC832704FE57
:100FD00083A74700232CF4FC832704FE83A7870004
:100FE000232AF4FC832704FE83A747012326F4FE6B
:100FF0000327C4FE8327C4FBB307F7022324F4FEB0
:101000008327C4FE639A0700930710002326F4FE8B
:101010008327C4FB2324F4FE832704FE83A7C70091
:101020002328F4FC232204FE6F00000C032784FB1A
:10103000832704FD3307F702832784FEB307F700F5
:101040002326F4FC032784FE832704FDB337F7002F
:1010500093F7F70F2324F4FC832784FC93B717003E
:10106000A303F4FC834774FC138F0700B7170080B9
:10107000938F470D6B200F007B70FF018327C4FC0B
:10108000939727000327C4FDB307F70083A6070043
:101090008327C4FC93972700032784FDB307F70039
:1010A00003A707008327C4FC93972700032644FD6A
:1010B000B307F6003387E64023A0E700832784FECA
:1010C000938717002324F4FEB7170080138E870D33
:1010D00067000E00130000006B300000832744FE01
:1010E000938717002322F4FE832744FE0327C4FEC0
:1010F000E3EEE7F2130000008320C104032481041F
:101100001301010567800000130101FC232E110269
:10111000232C810213040104232EA4FC232CB4FCF1
:10112000232AC4FC2328D4FC2326E4FCB7670281CD
:101130000327C4FD23A2E71EB76702819387471EDA
:10114000032784FD23A2E700B76702819387471E28
:10115000032744FD23A4E700B76702819387471E56
:101160000327C4FC23A6E700B76702819387471EC5
:10117000032704FD23A8E700EFF08F882324A4FEB3
:101180000327C4FC832784FEB357F7022326F4FE0B
:101190000327C4FC832784FEB377F7026388070024
:1011A0008327C4FE938717002326F4FEB7670281C6
:1011B0009387471E0327C4FE23AAE7000327C4FC26
:1011C000832784FE6362F702B76702819386471E16
:1011D000B717008013860724832584FE032504FDAA
:1011E000EFF08FA96F000002B76702819386471E58
:1011F000B7170080138607248325C4FC032504FD4C
:10120000EFF08FA7EFE05FFF2322A4FE032704FD8A
:10121000832744FE63F8E700032544FEEFF0CFB4D4
:101220006F00C000032504FDEFF00FB413000000B1
:101230008320C1030324810313010104678000009C
:10124000130101FB23261104232481041304010547
:10125000232EA4FA232CB4FAEFF00FC02320A4FE0F
:10126000832704FE83A70700232EF4FC832704FEB4
:1012700083A7470083A70700232CF4FC832704FEE1
:1012800083A78700232AF4FC832704FE83A7470152
:101290002326F4FE0327C4FE8327C4FBB307F7020B
:1012A0002324F4FE8327C4FE639A070093071000EB
:1012B0002326F4FE8327C4FB2324F4FE832704FEA5
:1012C00083A7C7002328F4FC232204FE6F00000B31
:1012D000032784FB832704FD3307F702832784FE5B
:1012E000B307F7002326F4FC032784FE832704FDBD
:1012F000B337F70093F7F70F2324F4FC832784FC1C
:1013000093B71700A303F4FC834774FC138F070003
:10131000B7170080938F87366B200F007B70FF011B
:101320008327C4FC939727000327C4FDB307F70066
:1013300083A607008327C4FC93972700032744FD57
:10134000B307F700032784FD3387E60023A0E700F7
:10135000832784FE938717002324F4FEB7170080A9
:10136000138EC73667000E00130000006B300000BC
:10137000832744FE938717002322F4FE832744FE2D
:101380000327C4FEE3E6E7F4130000008320C10452
:10139000032481041301010567800000130101FC8F
:1013A000232E1102232C810213040104232EA4FCFA
:1013B000232CB4FC232AC4FC2328D4FC2326E4FCDD
:1013C000B76702810327C4FD23A2E71EB767028126
:1013D0009387471E032784FD23A2E700B767028196
:1013E0009387471E032744FD23A4E700B7670281C4
:1013F0009387471E0327C4FC23A6E700B767028133
:101400009387471E032704FD23A8E700EFE05FDF73
:101410002324A4FE0327C4FC832784FEB357F702CA
:101420002326F4FE0327C4FC832784FEB377F70248
:10143000638807008327C4FE938717002326F4FEE2
:10144000B76702819387471E0327C4FE23AAE700DC
:101450000327C4FC832784FE6362F702B767028117
:101460009386471EB71700801386474D832584FE59
:10147000032504FDEFF04F806F000002B767028183
:101480009386471EB71700801386474D8325C4FCFB
:10149000032504FDEFE05FFEEFE01FD62322A4FE4C
:1014A000032704FD832744FE63F8E700032544FE79
:1014B000EFF08F8B6F00C000032504FDEFF0CF8AA3
:1014C000130000008320C1030324810313010104DE
:1014D00067800000130101FB2326110423248104EB
:1014E00013040105232EA4FA232CB4FAEFF0CF96AF
:1014F0002320A4FE832704FE83A70700232EF4FCE9
:10150000832704FE83A7470083A70700232CF4FC4E
:10151000832704FE83A78700232AF4FC832704FE85
:1015200083A747012326F4FE0327C4FE8327C4FBB9
:10153000B307F7022324F4FE8327C4FE639A07004F
:10154000930710002326F4FE8327C4FB2324F4FE14
:10155000832704FE83A7C7002328F4FC232204FE6C
:101560006F00000B032784FB832704FD3307F7027A
:10157000832784FEB307F7002326F4FC032784FEA9
:10158000832704FDB337F70093F7F70F2324F4FC08
:10159000832784FC93B71700A303F4FC834774FCF0
:1015A000138F0700B7170080938FC75F6B200F0062
:1015B0007B70FF018327C4FC939727000327C4FD9A
:1015C000B307F70083A607008327C4FC939727007F
:1015D000032744FDB307F700032784FD3387E602A2
:1015E00023A0E700832784FE938717002324F4FEBB
:1015F000B7170080138E076067000E00130000000D
:101600006B300000832744FE938717002322F4FEEB
:10161000832744FE0327C4FEE3E6E7F4130000003B
:101620008320C104032481041301010567800000A5
:10163000130101FD2326810213040103232EA4FCC0
:10164000232604FE6F0000018327C4FE9387170042
:101650002326F4FE0327C4FE8327C4FDE346F7FEDA
:10166000130000000324C10213010103678000007E
:10167000130101FD23261102232481021304010317
:10168000232EA4FC232CB4FCB76702811387C71F49
:101690008327C4FDB307F700130710002380E7007A
:1016A0008327C4FD6390070CA30104FE232604FED8
:1016B0006F00800A232604FE232404FE6F004003EB
:1016C000B76702811387C71F832784FEB307F7001C
:1016D00083C70700638807008327C4FE938717002A
:1016E0002326F4FE832784FE938717002324F4FE29
:1016F000032784FE832784FDE344F7FC0327C4FE0D
:10170000832784FD631AF704232204FE6F0000047C
:10171000B76702811387C71F832744FEB307F7000B
:1017200023800700B7970281130710002382E72C5C
:1017300013056004EFF0DFEFB79702812382072CD7
:10174000832744FE938717002322F4FE032744FED9
:10175000832784FDE34EF7FA834734FEE39C07F4C6
:101760006F00400213000000B797028183C7472C27
:1017700093C7170093F7F70FE39807FE130540068A
:10178000EFF01FEB130000008320C102032481024D
:101790001301010367800000130101FF232681006C
:1017A00013040101930700001308000013850700CC
:1017B000930508000324C1001301010167800000A4
:1017C000130101FE232E810013040102232604FECF
:1017D0006F008004B76702810327C4FE1317270038
:1017E0009387C721B307F7001307300023A0E70052
:1017F000B77702810327C4FE131727009387C721F9
:10180000B307F7001307200023A0E7008327C4FED7
:10181000938717002326F4FE0327C4FE9307F00FD7
:10182000E3DAE7FA130000000324C1011301010207
:1018300067800000130101FD232611022324810289
:1018400013040103232EA4FCB7070081138587111D
:10185000EFE0DFF8232604FE6F0080058327C4FE37
:10186000638E07008327C4FE93F7F7006398070091
:10187000B70700811385C713EFE05FF68327C4FE27
:10188000939727000327C4FDB307F70083A707003A
:1018900013850700EFE05FF8B70700811385071491
:1018A000EFE0DFF38327C4FE938717002326F4FEBF
:1018B0000327C4FE9307F00FE3D2E7FAB7070081CE
:1018C00013854714EFE09FF1130000008320C1024D
:1018D000032481021301010367800000130101FF4B
:1018E000232611002324810013040101EFF05FED92
:1018F000B76702811385C721EFF0DFF3930700007C
:10190000138507008320C100032481001301010116
:0419100067800000EC
:10009000130000001300000013000000EBE0BF019C
:1000A0001300000013000000130000001300000004
:1000B0001300000013000000170500001305451B86
:1000C0006B40050017030000130343F66B000300A9
:1000D00067800000170200011302C22323200200E0
:1000E0002322120023242200232632002328420048
:1000F000232A5200232C6200232E72002320820226
:10010000232292022324A2022326B2022328C2021F
:10011000232AD202232CE202232EF20223200205FC
:1001200023221205232422052326320523284205F3
:10013000232A5205232C6205232E720523208207D1
:10014000232292072324A2072326B2072328C207CB
:10015000232AD207232CE207232EF20713021000D2
:1001600067800000170200011302C21A0320020078
:1001700083204200032182008321C2000322020166
:1001800083224201032382018323C201032402024A
:1001900083244202032582028325C202032602032E
:1001A00083264203032782038327C2030328020412
:1001B00083284204032982048329C204032A0205F6
:1001C000832A4205032B8205832BC205032C0206DA
:1001D000832C4206032D8206832DC206032E0207BE
:1001E000832E4207032F8207832FC20713020000CA
:1001F00067800000732500026780000073251002ED
:1002000067800000130101FE232E1100232C8100C2
:1002100013040102232604FE6F0040030327C4FEDB
:10022000B7170000938747973307F702B707008196
:1002300093870741B307F70013850700EF000044D9
:100240008327C4FE938717002326F4FE0327C4FEEA
:100250009307F001E3D4E7FC130000008320C10101
:10026000032481011301010267800000130101FDD5
:1002700023261102232481022322A1031304010354
:100280001300000013070D00B7170000938747976E
:100290003307F702B707008193870741B307F700D9
:1002A00013850700EF00405093070500638A07029B
:1002B00013070D00B70700811317270093878726C0
:1002C000B307F7001307100023A0E70093070D0002
:1002D00063960700EFF01FE96F00C0057300000090
:1002E00013070D00B7170000938747973307F702EE
:1002F000B707008193870741B307F700130784FD11
:100300009305070013850700EF000040832704FED4
:10031000138107008327C4FD832584FD032644FE43
:10032000832684FE0327C4FE13850700EFF0DFCF8A
:10033000730000008320C10203248102032D4102C7
:100340001301010367800000130101FB2326110440
:100350002324810413040105EFF0DFE92324A4FE24
:1003600093090100930710002326F4FE6F00C008D4
:100370000327C4FEB7170000938747973307F70298
:10038000B707008193870741B307F700138507007C
:10039000EF00804193070500639A07040327C4FE1A
:1003A000B7170000938747973307F702B707008115
:1003B00093870741B307F700130704FD9305070070
:1003C00013850700EF004034832784FD1381070065
:1003D000832744FD832504FD0326C4FD832604FEF4
:1003E000032744FE13850700EFF0DFCD8327C4FE0B
:1003F000938717002326F4FE8327C4FE032784FE79
:10040000E3E8E7F613810900EFF0DFCC9307020081
:1004100063880704B707008113850741EF00C038E0
:1004200093070500639E0702930784FB93850700EB
:10043000B707008113850741EF00002D832704FCD7
:10044000138107008327C4FB832584FB032644FC18
:10045000832684FC0327C4FC13850700EFF0DFBC70
:10046000130000008320C10403248104130101054B
:1004700067800000130101FB23261104232481045B
:1004800013040105232EA4FA232CB4FA232AC4FA58
:100490002328D4FAEFF01FD7EFF0DFD52322A4FEF4
:1004A00013090100232604FE232404FE6F00000923
:1004B000B709FFFF33013101832784FE2326F4FCB3
:1004C000832784FB2328F4FC93070100232AF4FCF0
:1004D000832744FB232CF4FC832704FB232EF4FC0A
:1004E0008327C4FE2320F4FE0327C4FEB7170000B1
:1004F000938747973307F702B70700819387074130
:10050000B307F7001307C4FC930507001385070022
:10051000EF0000198327C4FE938717002326F4FEFB
:100520008327C4FE032744FE63E4E700232604FE7A
:10053000832784FE938717002324F4FE032784FE79
:100540008327C4FBE366F7F613010900EFF0DFDF52
:10055000130000008320C10403248104130101055A
:1005600067800000130101FD23261102232481026C
:1005700013040103232EA4FC8325C4FDB7070081C7
:1005800013850704EF004035EFF0DFC62320A4FEFB
:10059000232604FE6F008006930710002326F4FE36
:1005A000232404FE6F00C003B7070081032784FEE5
:1005B0001317270093878726B307F70003A70700C1
:1005C000930710006318F7008327C4FE9387170072
:1005D0002326F4FE832784FE938717002324F4FE4A
:1005E000032784FE9307F001E3D0E7FC8325C4FED4
:1005F000B70700811385C704EF00002E0327C4FE50
:100600008327C4FDE36AF7F8232204FE6F0080020B
:10061000B7070081032744FE131727009387872617
:10062000B307F70023A00700832744FE9387170032
:100630002322F4FE832744FE032704FEE3EAE7FCBB
:10064000130000008320C10203248102130101036F
:1006500067800000130101FF23268100232471011C
:100660001304010193870B00138507000324C100C5
:10067000832B8100130101016780000093020500B4
:10068000130300009303700023A0620023A2620002
:1006900023A4620023A6720023A8620067800000E2
:1006A0009302050003A382001303130023A4620036
:1006B0001383420183AE420093935E0033037300C1
:1006C00003AE05002320C30103AE45002322C3016E
:1006D00003AE85002324C30103AEC5002326C30156
:1006E00003AE05012328C30103AE4501232AC3013C
:1006F000938E1E00130F20036394EE01930E0000EF
:1007000023A2D201678000009302050003A38200A8
:10071000130000001300000013000000130000008D
:1007200013000000130000001303F3FF23A4620072
:100730001383420183AE0200930F2003138F0E0038
:10074000130F1F006314FF01130F000023A0E20129
:1007500093935E0033037300032E030023A0C501AF
:10076000032E430023A2C501032E830023A4C50149
:10077000032EC30023A6C501032E030123A8C50130
:10078000032E430123AAC5016780000093020500E0
:1007900003A3820013050000130E200363146E00F0
:1007A00013051500678000009302050003A3820073
:1007B00013050000130E000063146E0013051500EE
:1007C000678000009302050003A3C20083A3020117
:1007D00033B5630067800000130141FF232011003F
:1007E0002322B1008345050063880500EF00C001A6
:1007F000130515006FF01FFF8320010083254100C2
:100800001301C10067800000B708010023A0B800F1
:1008100067800000130101FD2326110223248102B9
:1008200013040103232EA4FC0327C4FD9307F00047
:1008300063E4E702B70700810327C4FD131727000D
:100840009387871AB307F70083A70700138507006C
:10085000EFF09FF86F004007930700022326F4FE95
:10086000A30504FE8327C4FE9387C7FF0327C4FDA7
:10087000B357F70093F7F7002322F4FE832744FED3
:100880006386070093071000A305F4FE8347B4FEB8
:1008900063820702B7070081032744FE131727006E
:1008A0009387871AB307F70083A70700138507000C
:1008B000EFF09FF28327C4FE9387C7FF2326F4FE41
:1008C0008327C4FEE340F0FA8320C102032481029F
:1008D0001301010367800000130101FE232E1100A4
:1008E000232C8100130401022326A4FE2324B4FE3A
:1008F0000325C4FEEFF05FEE032584FEEFF09FF1C9
:10090000B707008113854709EFF01FED13000000C2
:100910008320C101032481011301010267800000CB
:10092000130101FD23261102232481021304010374
:10093000232EA4FC232CB4FC232AC4FC2328D4FC9F
:10094000B76702810327C4FD23ACE71AB7670281AA
:100950009387871B032784FD23A2E700B7670281E3
:100960009387871B032744FD23A4E700B767028111
:100970009387871B032704FD23A6E700EFF01F885A
:100980002324A4FE032704FD832784FEB357F70224
:100990002326F4FE032704FD832784FEB377F702A2
:1009A000638807008327C4FE938717002326F4FE7D
:1009B000B76702819387871B0327C4FE23A8E7003C
:1009C000032704FD832784FE6362F702B767028171
:1009D0009386871BB7170080138647A4832584FE60
:1009E000032504FDEFF01FA96F000002B767028125
:1009F0009386871BB7170080138647A4832504FDC1
:100A0000032504FDEFF01FA7EFF0CFFE2322A4FE85
:100A1000032704FD832744FE63F8E700032544FE13
:100A2000EFF05FB46F00C000032504FDEFF09FB34B
:100A3000130000008320C10203248102130101037B
:100A400067800000130101FA232E1104232C810476
:100A5000130401062326A4FA2324B4FAEFF09FBF5F
:100A6000232CA4FC832784FD83A70700232AF4FCFE
:100A7000832784FD83A747002328F4FC832784FD74
:100A800083A787002326F4FC832784FD83A707011F
:100A90002326F4FE0327C4FE8327C4FAB307F70214
:100AA0002324F4FE8327C4FE639A070093071000F3
:100AB0002326F4FE8327C4FA2324F4FE832784FD2F
:100AC00083A7C7002324F4FC232204FE6F00800DBB
:100AD000232004FE232E04FC6F008007032784FAE2
:100AE000832784FCB307F7020327C4FDB307F7008D
:100AF0002322F4FC032784FC8327C4FDB307F702F9
:100B0000032784FEB307F7002320F4FC832744FC6B
:100B100093972700032744FDB307F70003A70700B7
:100B2000832704FC93972700832604FDB387F600F0
:100B300083A70700B307F702032704FEB307F700F4
:100B40002320F4FE8327C4FD93871700232EF4FC93
:100B50000327C4FD832784FCE362F7F8032784FAA4
:100B6000832784FC3307F702832784FEB307F7004B
:100B7000232EF4FA8327C4FB939727000327C4FC92
:100B8000B307F700032704FE23A0E700832784FEB2
:100B9000938717002324F4FE832744FE93871700CE
:100BA0002322F4FE832744FE0327C4FEE3E2E7F298
:100BB000130000008320C1050324810513010106F1
:100BC00067800000130101FC232E1102232C8102F7
:100BD00013040104232EA4FC232CB4FC232AC4FCFC
:100BE0002328D4FC2326E4FCB76702810327C4FD35
:100BF00023A6E71CB76702819387C71C032784FDE0
:100C000023A2E700B76702819387C71C032744FD2F
:100C100023A4E700B76702819387C71C0327C4FC9E
:100C200023A6E700B76702819387C71C032704FD4B
:100C300023A8E700EFF08FDC2324A4FE0327C4FCE5
:100C4000832784FEB357F7022326F4FE0327C4FC50
:100C5000832784FEB377F702638807008327C4FEE7
:100C6000938717002326F4FEB76702819387C71C7A
:100C70000327C4FE23AAE7000327C4FC832784FEBE
:100C80006362F702B76702819386C71CB7170080BB
:100C90001386C7CF832584FE032504FDEFF08FFD67
:100CA0006F000002B76702819386C71CB7170080E8
:100CB0001386C7CF8325C4FC032504FDEFF08FFB0B
:100CC000EFF04FD32322A4FE032704FD832744FE25
:100CD00063F8E700032544FEEFF0DF886F00C000F3
:100CE000032504FDEFF01F88130000008320C103DB
:100CF000032481031301010467800000130101FB39
:100D0000232611042324810413040105232EA4FAAD
:100D1000232CB4FAEFF01F942320A4FE832704FEB3
:100D200083A70700232EF4FC832704FE83A7470034
:100D3000232CF4FC832704FE83A78700232AF4FCDA
:100D4000832704FE83A747012326F4FE0327C4FE5E
:100D50008327C4FBB307F7022324F4FE8327C4FED2
:100D6000639A0700930710002326F4FE8327C4FB31
:100D70002324F4FE832704FE83A7C7002328F4FC62
:100D8000232204FE6F00000C032784FB832704FD4D
:100D90003307F702832784FEB307F7002326F4FC0A
:100DA000032784FE832704FDB337F70093F7F70F7B
:100DB0002324F4FC832784FC93B71700A303F4FCDB
:100DC000834774FC138F0700B7170080938F07E3E6
:100DD0006B200F007B70FF018327C4FC93972700D3
:100DE0000327C4FDB307F70083A607008327C4FCCD
:100DF00093972700032784FDB307F70003A7070095
:100E00008327C4FC93972700032644FDB307F6000D
:100E10003387E60023A0E700832784FE938717002B
:100E20002324F4FEB7170080138E47E367000E00FB
:100E3000130000006B300000832744FE93871700E7
:100E40002322F4FE832744FE0327C4FEE3EEE7F2E9
:100E5000130000008320C104032481041301010551
:100E600067800000130101FC232E1102232C810254
:100E700013040104232EA4FC232CB4FC232AC4FC59
:100E80002328D4FC2326E4FCB76702810327C4FD92
:100E900023A6E71CB76702819387C71C032784FD3D
:100EA00023A2E700B76702819387C71C032744FD8D
:100EB00023A4E700B76702819387C71C0327C4FCFC
:100EC00023A6E700B76702819387C71C032704FDA9
:100ED00023A8E700EFF08FB22324A4FE0327C4FC6D
:100EE000832784FEB357F7022326F4FE0327C4FCAE
:100EF000832784FEB377F702638807008327C4FE45
:100F0000938717002326F4FEB76702819387C71CD7
:100F10000327C4FE23AAE7000327C4FC832784FE1B
:100F20006362F702B76702819386C71CB717008018
:100F30001386C7F9832584FE032504FDEFF08FD3C4
:100F40006F000002B76702819386C71CB717008045
:100F50001386C7F98325C4FC032504FDEFF08FD168
:100F6000EFF04FA92322A4FE032704FD832744FEAC
:100F700063F8E700032544FEEFF0CFDE6F00C0000A
:100F8000032504FDEFF00FDE130000008320C103F2
:100F9000032481031301010467800000130101FB96
:100FA000232611042324810413040105232EA4FA0B
:100FB000232CB4FAEFF00FEA2320A4FE832704FECB
:100FC00083A70700232EF4FC832704FE83A7470092
:100FD000232CF4FC832704FE83A78700232AF4FC38
:100FE000832704FE83A747012326F4FE0327C4FEBC
:100FF0008327C4FBB307F7022324F4FE8327C4FE30
:10100000639A0700930710002326F4FE8327C4FB8E
:101010002324F4FE832704FE83A7C7002328F4FCBF
:10102000232204FE6F00000C032784FB832704FDAA
:101030003307F702832784FEB307F7002326F4FC67
:10104000032784FE832704FDB337F70093F7F70FD8
:101050002324F4FC832784FC93B71700A303F4FC38
:10106000834774FC138F0700B7170080938F070D19
:101070006B200F007B70FF018327C4FC9397270030
:101080000327C4FDB307F70083A607008327C4FC2A
:1010900093972700032784FDB307F70003A70700F2
:1010A0008327C4FC93972700032644FDB307F6006B
:1010B0003387E64023A0E700832784FE9387170049
:1010C0002324F4FEB7170080138E470D67000E002F
:1010D000130000006B300000832744FE9387170045
:1010E0002322F4FE832744FE0327C4FEE3EEE7F247
:1010F000130000008320C1040324810413010105AF
:1011000067800000130101FC232E1102232C8102B1
:1011100013040104232EA4FC232CB4FC232AC4FCB6
:101120002328D4FC2326E4FCB76702810327C4FDEF
:1011300023A2E71EB76702819387471E032784FD1A
:1011400023A2E700B76702819387471E032744FD68
:1011500023A4E700B76702819387471E0327C4FCD7
:1011600023A6E700B76702819387471E032704FD84
:1011700023A8E700EFF08F882324A4FE0327C4FCF4
:10118000832784FEB357F7022326F4FE0327C4FC0B
:10119000832784FEB377F702638807008327C4FEA2
:1011A000938717002326F4FEB76702819387471EB3
:1011B0000327C4FE23AAE7000327C4FC832784FE79
:1011C0006362F702B76702819386471EB7170080F4
:1011D0001386C723832584FE032504FDEFF08FA922
:1011E0006F000002B76702819386471EB717008021
:1011F0001386C7238325C4FC032504FDEFF08FA7C6
:10120000EFE05FFF2322A4FE032704FD832744FEB3
:1012100063F8E700032544FEEFF0CFB46F00C00091
:10122000032504FDEFF00FB4130000008320C10379
:10123000032481031301010467800000130101FBF3
:10124000232611042324810413040105232EA4FA68
:10125000232CB4FAEFF00FC02320A4FE832704FE52
:1012600083A70700232EF4FC832704FE83A74700EF
:1012700083A70700232CF4FC832704FE83A78700A1
:10128000232AF4FC832704FE83A747012326F4FEC8
:101290000327C4FE8327C4FBB307F7022324F4FE0D
:1012A0008327C4FE639A0700930710002326F4FEE9
:1012B0008327C4FB2324F4FE832704FE83A7C700EF
:1012C0002328F4FC232204FE6F00000B032784FB79
:1012D000832704FD3307F702832784FEB307F70053
:1012E0002326F4FC032784FE832704FDB337F7008D
:1012F00093F7F70F2324F4FC832784FC93B717009C
:10130000A303F4FC834774FC138F0700B717008016
:10131000938F47366B200F007B70FF018327C4FC3F
:10132000939727000327C4FDB307F70083A60700A0
:101330008327C4FC93972700032744FDB307F700D6
:10134000032784FD3387E60023A0E700832784FE7C
:10135000938717002324F4FEB7170080138E873677
:1013600067000E00130000006B300000832744FE6E
:10137000938717002322F4FE832744FE0327C4FE2D
:10138000E3E6E7F4130000008320C1040324810492
:101390001301010567800000130101FC232E1102D7
:1013A000232C810213040104232EA4FC232CB4FC5F
:1013B000232AC4FC2328D4FC2326E4FCB76702813B
:1013C0000327C4FD23A2E71EB76702819387471E48
:1013D000032784FD23A2E700B76702819387471E96
:1013E000032744FD23A4E700B76702819387471EC4
:1013F0000327C4FC23A6E700B76702819387471E33
:10140000032704FD23A8E700EFE05FDF2324A4FE09
:101410000327C4FC832784FEB357F7022326F4FE78
:101420000327C4FC832784FEB377F7026388070091
:101430008327C4FE938717002326F4FEB767028133
:101440009387471E0327C4FE23AAE7000327C4FC93
:10145000832784FE6362F702B76702819386471E83
:10146000B71700801386074D832584FE032504FDEE
:10147000EFF04F806F000002B76702819386471E2E
:10148000B71700801386074D8325C4FC032504FD90
:10149000EFE05FFEEFE01FD62322A4FE032704FD4A
:1014A000832744FE63F8E700032544FEEFF08F8BAB
:1014B0006F00C000032504FDEFF0CF8A1300000089
:1014C0008320C1030324810313010104678000000A
:1014D000130101FB232611042324810413040105B5
:1014E000232EA4FA232CB4FAEFF0CF962320A4FEE7
:1014F000832704FE83A70700232EF4FC832704FE22
:1015000083A7470083A70700232CF4FC832704FE4E
:1015100083A78700232AF4FC832704FE83A74701BF
:101520002326F4FE0327C4FE8327C4FBB307F70278
:101530002324F4FE8327C4FE639A07009307100058
:101540002326F4FE8327C4FB2324F4FE832704FE12
:1015500083A7C7002328F4FC232204FE6F00000B9E
:10156000032784FB832704FD3307F702832784FEC8
:10157000B307F7002326F4FC032784FE832704FD2A
:10158000B337F70093F7F70F2324F4FC832784FC89
:1015900093B71700A303F4FC834774FC138F070071
:1015A000B7170080938F875F6B200F007B70FF0160
:1015B0008327C4FC939727000327C4FDB307F700D4
:1015C00083A607008327C4FC93972700032744FDC5
:1015D000B307F700032784FD3387E60223A0E70063
:1015E000832784FE938717002324F4FEB717008017
:1015F000138EC75F67000E00130000006B30000001
:10160000832744FE938717002322F4FE832744FE9A
:101610000327C4FEE3E6E7F4130000008320C104BF
:10162000032481041301010567800000130101FDFB
:101630002326810213040103232EA4FC232604FE87
:101640006F0000018327C4FE938717002326F4FE52
:101650000327C4FE8327C4FDE346F7FE1300000002
:101660000324C1021301010367800000130101FD7F
:10167000232611022324810213040103232EA4FC38
:10168000232CB4FCB76702811387C71F8327C4FDCF
:10169000B307F700130710002380E7008327C4FD7A
:1016A0006390070CA30104FE232604FE6F00800A4A
:1016B000232604FE232404FE6F004003B767028143
:1016C0001387C71F832784FEB307F70083C707006C
:1016D000638807008327C4FE938717002326F4FE40
:1016E000832784FE938717002324F4FE032784FEB8
:1016F000832784FDE344F7FC0327C4FE832784FD8E
:10170000631AF704232204FE6F000004B767028106
:101710001387C71F832744FEB307F7002380070002
:10172000B7970281130710002382E72C130560048A
:10173000EFF0DFEFB79702812382072C832744FE67
:10174000938717002322F4FE032744FE832784FD9A
:10175000E34EF7FA834734FEE39C07F46F00400240
:1017600013000000B797028183C7472C93C7170067
:1017700093F7F70FE39807FE13054006EFF01FEB12
:10178000130000008320C10203248102130101031E
:1017900067800000130101FF23268100130401016B
:1017A0009307000013080000138507009305080045
:1017B0000324C1001301010167800000130101FE31
:1017C000232E810013040102232604FE6F008004EF
:1017D000B76702810327C4FE131727009387C72129
:1017E000B307F7001307300023A0E700B7770281A3
:1017F0000327C4FE131727009387C721B307F700F9
:101800001307200023A0E7008327C4FE9387170057
:101810002326F4FE0327C4FE9307F00FE3DAE7FA6A
:10182000130000000324C1011301010267800000BE
:10183000130101FD23261102232481021304010355
:10184000232EA4FCB707008113858711EFE0DFF892
:10185000232604FE6F0080058327C4FE638E0700E5
:101860008327C4FE93F7F70063980700B70700814A
:101870001385C713EFE05FF68327C4FE9397270015
:101880000327C4FDB307F70083A7070013850700EC
:10189000EFE05FF8B707008113850714EFE0DFF38F
:1018A0008327C4FE938717002326F4FE0327C4FE74
:1018B0009307F00FE3D2E7FAB707008113854714C7
:1018C000EFE09FF1130000008320C1020324810296
:1018D0001301010367800000130101FF232611009B
:1018E0002324810013040101EFF05FEDB76702814B
:1018F0001385C721EFF0DFF393070000138507007E
:101900008320C100032481001301010167800000CE
:02000004810079
:10000000300000003100000032000000330000002A
:10001000340000003500000036000000370000000A

View file

@ -6,30 +6,49 @@
.type _start, @function
.global _start
_start:
li a0, 4
# li a0, 4
# la a1, SPAWN
# .word 0x00b5106b
# j SPAWN
# nop
# nop
# nop
# nop
# nop
# nop
# nop
# nop
# SPAWN:
# li a2, 7
# li a0, 0
# .word 0x0005006b # tmc a0
###########################
# li a0, 4
# .word 0x0005006b # tmc a0
# csrr a1, 0x20 # read thread IDs
# # 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
############################
li a0, 8 # Num Warps
csrw 0x20, a0 # Setting the number of available warps
li a0, 4 # Num Threads
csrw 0x21, a0 # Setting the number of available threads
csrw mhartid,zero
csrw misa,zero
lui sp, 0x7ffff
# jal vx_before_main
jal main
li a0, 0
.word 0x0005006b # tmc a0
csrr a1, 0x20 # read thread IDs
# 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
# li a0, 8 # Num Warps
# csrw 0x20, a0 # Setting the number of available warps
# li a0, 4 # Num Threads
# csrw 0x21, a0 # Setting the number of available threads
# csrw mhartid,zero
# csrw misa,zero
# lui sp, 0x7ffff
# # jal vx_before_main
# jal main
# ecall
# Hi:
# li a2, 7

View file

@ -8,8 +8,7 @@ module VX_decode(
// Outputs
VX_frE_to_bckE_req_inter VX_frE_to_bckE_req,
VX_wstall_inter VX_wstall,
VX_join_inter VX_join,
output wire out_ebreak
VX_join_inter VX_join
);
@ -218,7 +217,7 @@ module VX_decode(
// assign is_ebreak = is_e_inst;
wire ebreak = (curr_opcode == `SYS_INST) && (jal_sys_jal && (|in_valid));
assign VX_frE_to_bckE_req.ebreak = ebreak;
assign out_ebreak = ebreak;
wire out_ebreak = ebreak;

View file

@ -27,51 +27,51 @@ module VX_fetch (
wire[`NW_M1:0] warp_num;
wire[31:0] warp_pc;
VX_warp_scheduler warp_scheduler(
.clk (clk),
.reset (reset),
.stall (pipe_stall),
.clk (clk),
.reset (reset),
.stall (pipe_stall),
// Wspawn
.wspawn (VX_warp_ctl.wspawn),
.wsapwn_pc (VX_warp_ctl.wspawn_pc),
// .wspawn_warp_num(VX_warp_ctl.warp_num),
.wspawn (VX_warp_ctl.wspawn),
.wsapwn_pc (VX_warp_ctl.wspawn_pc),
.wspawn_new_active(VX_warp_ctl.wspawn_new_active),
// CTM
.ctm (VX_warp_ctl.change_mask),
.ctm_mask (VX_warp_ctl.thread_mask),
.ctm_warp_num (VX_warp_ctl.warp_num),
.ctm (VX_warp_ctl.change_mask),
.ctm_mask (VX_warp_ctl.thread_mask),
.ctm_warp_num (VX_warp_ctl.warp_num),
// WHALT
.whalt (VX_warp_ctl.ebreak),
.whalt_warp_num (VX_warp_ctl.warp_num),
.whalt (VX_warp_ctl.ebreak),
.whalt_warp_num (VX_warp_ctl.warp_num),
// Wstall
.wstall (VX_wstall.wstall),
.wstall_warp_num(VX_wstall.warp_num),
.wstall (VX_wstall.wstall),
.wstall_warp_num (VX_wstall.warp_num),
// Join
.is_join (VX_join.is_join),
.join_warp_num (VX_join.join_warp_num),
.is_join (VX_join.is_join),
.join_warp_num (VX_join.join_warp_num),
// Split
.is_split (VX_warp_ctl.is_split),
.split_new_mask (VX_warp_ctl.split_new_mask),
.split_later_mask(VX_warp_ctl.split_later_mask),
.split_save_pc (VX_warp_ctl.split_save_pc),
.split_warp_num (VX_warp_ctl.warp_num),
.is_split (VX_warp_ctl.is_split),
.split_new_mask (VX_warp_ctl.split_new_mask),
.split_later_mask (VX_warp_ctl.split_later_mask),
.split_save_pc (VX_warp_ctl.split_save_pc),
.split_warp_num (VX_warp_ctl.warp_num),
// JAL
.jal (VX_jal_rsp.jal),
.jal_dest (VX_jal_rsp.jal_dest),
.jal_warp_num (VX_jal_rsp.jal_warp_num),
.jal (VX_jal_rsp.jal),
.jal_dest (VX_jal_rsp.jal_dest),
.jal_warp_num (VX_jal_rsp.jal_warp_num),
// Branch
.branch_valid (VX_branch_rsp.valid_branch),
.branch_dir (VX_branch_rsp.branch_dir),
.branch_dest (VX_branch_rsp.branch_dest),
.branch_warp_num(VX_branch_rsp.branch_warp_num),
.branch_valid (VX_branch_rsp.valid_branch),
.branch_dir (VX_branch_rsp.branch_dir),
.branch_dest (VX_branch_rsp.branch_dest),
.branch_warp_num (VX_branch_rsp.branch_warp_num),
// Outputs
.thread_mask (thread_mask),
.warp_num (warp_num),
.warp_pc (warp_pc),
.out_ebreak (out_ebreak)
.thread_mask (thread_mask),
.warp_num (warp_num),
.warp_pc (warp_pc),
.out_ebreak (out_ebreak)
);

View file

@ -32,7 +32,7 @@ wire decode_branch_stall;
wire total_freeze = schedule_delay;
/* verilator lint_off UNUSED */
wire real_fetch_ebreak;
// wire real_fetch_ebreak;
/* verilator lint_on UNUSED */
@ -51,7 +51,7 @@ VX_fetch vx_fetch(
.icache_request (icache_request_fe),
.VX_branch_rsp (VX_branch_rsp),
.out_ebreak (real_fetch_ebreak), // fetch_ebreak
.out_ebreak (fetch_ebreak), // fetch_ebreak
.fe_inst_meta_fd (fe_inst_meta_fd)
);
@ -68,8 +68,7 @@ VX_decode vx_decode(
.fd_inst_meta_de (fd_inst_meta_de),
.VX_frE_to_bckE_req(VX_frE_to_bckE_req),
.VX_wstall (VX_wstall),
.VX_join (VX_join),
.out_ebreak (fetch_ebreak)
.VX_join (VX_join)
);
wire no_br_stall = 0;

View file

@ -20,14 +20,27 @@ module VX_gpgpu_inst (
wire valid_inst = (|curr_valids);
assign VX_warp_ctl.warp_num = VX_gpu_inst_req.warp_num;
assign VX_warp_ctl.change_mask = (VX_gpu_inst_req.is_tmc || VX_gpu_inst_req.is_split) && valid_inst;
assign VX_warp_ctl.change_mask = (VX_gpu_inst_req.is_tmc) && valid_inst;
assign VX_warp_ctl.thread_mask = VX_gpu_inst_req.is_tmc ? tmc_new_mask : 0;
assign VX_warp_ctl.ebreak = (VX_gpu_inst_req.a_reg_data[0] == 0) && valid_inst;
// assign VX_warp_ctl.ebreak = (VX_gpu_inst_req.a_reg_data[0] == 0) && valid_inst;
assign VX_warp_ctl.ebreak = VX_warp_ctl.change_mask && (VX_warp_ctl.thread_mask == 0);
assign VX_warp_ctl.wspawn = 0;
assign VX_warp_ctl.wspawn_pc = 0;
wire wspawn = VX_gpu_inst_req.is_wspawn;
wire[31:0] wspawn_pc = VX_gpu_inst_req.rd2;
wire[`NW-1:0] wspawn_new_active;
genvar curr_w;
for (curr_w = 0; curr_w < `NW; curr_w=curr_w+1)
begin
assign wspawn_new_active[curr_w] = curr_w < VX_gpu_inst_req.a_reg_data[0];
end
assign VX_warp_ctl.wspawn = wspawn;
assign VX_warp_ctl.wspawn_pc = wspawn_pc;
assign VX_warp_ctl.wspawn_new_active = wspawn_new_active;
wire[`NT_M1:0] split_new_use_mask;
wire[`NT_M1:0] split_new_later_mask;
@ -49,7 +62,7 @@ module VX_gpgpu_inst (
);
assign VX_warp_ctl.is_split = is_split && (num_valids > 1);
assign VX_warp_ctl.is_split = is_split && (num_valids > 1) && (split_new_use_mask != 0) && (split_new_use_mask != {`NT{1'b1}});
assign VX_warp_ctl.split_new_mask = split_new_use_mask;
assign VX_warp_ctl.split_later_mask = split_new_later_mask;
assign VX_warp_ctl.split_save_pc = VX_gpu_inst_req.pc_next;

View file

@ -7,6 +7,7 @@ module VX_warp_scheduler (
// Wspawn
input wire wspawn,
input wire[31:0] wsapwn_pc,
input wire[`NW-1:0] wspawn_new_active,
// CTM
input wire ctm,
@ -50,6 +51,10 @@ module VX_warp_scheduler (
);
wire update_use_wspawn;
wire update_visible_active;
wire[(1+32+`NT_M1):0] d[`NW-1:0];
wire join_fall;
@ -72,9 +77,9 @@ module VX_warp_scheduler (
reg[31:0] warp_pcs[`NW-1:0];
// Choosing a warp to wsapwn
wire[`NW_M1:0] warp_to_wsapwn;
wire found_wspawn;
// wsapwn
reg[31:0] use_wsapwn_pc;
reg[`NW-1:0] use_wsapwn;
wire[`NW_M1:0] warp_to_schedule;
wire schedule;
@ -111,15 +116,19 @@ module VX_warp_scheduler (
warp_pcs[curr_w_help] <= 0;
warp_active[curr_w_help] <= 0; // Activating first warp
visible_active[curr_w_help] <= 0; // Activating first warp
thread_masks[curr_w_help] <= 0; // Activating first thread in first warp
thread_masks[curr_w_help] <= 1; // Activating first thread in first warp
end
end else begin
// Wsapwning warps
if (wspawn && found_wspawn) begin
warp_pcs[warp_to_wsapwn] <= wsapwn_pc;
warp_active[warp_to_wsapwn] <= 1;
visible_active[warp_to_wsapwn] <= 1;
if (wspawn) begin
warp_active <= wspawn_new_active;
use_wsapwn_pc <= wsapwn_pc;
use_wsapwn <= wspawn_new_active & (~`NW'b1);
end
if (update_use_wspawn) begin
use_wsapwn[warp_to_schedule] <= 0;
end
// Halting warps
if (whalt) begin
@ -152,13 +161,7 @@ module VX_warp_scheduler (
end
// Refilling active warps
if ((visible_active == 0) && !(stall || wstall || hazard || is_join)) begin
visible_active <= warp_active & (~warp_stalled);
end
// First cycle
if (start <= 2) begin
start <= 1;
if (update_visible_active) begin
visible_active <= warp_active & (~warp_stalled);
end
@ -182,6 +185,9 @@ module VX_warp_scheduler (
end
end
assign update_visible_active = ($countones(visible_active) < 1) && !(stall || wstall || hazard || is_join);
wire[(1+32+`NT_M1):0] q1 = {1'b1, 32'b0 , thread_masks[split_warp_num]};
wire[(1+32+`NT_M1):0] q2 = {1'b0, split_save_pc , split_later_mask};
@ -220,15 +226,18 @@ module VX_warp_scheduler (
assign global_stall = (stall || wstall || hazard || !real_schedule || is_join);
assign warp_pc = warp_pcs[warp_to_schedule];
wire real_use_wspawn = use_wsapwn[warp_to_schedule];
assign warp_pc = real_use_wspawn ? use_wsapwn_pc : warp_pcs[warp_to_schedule];
assign thread_mask = (global_stall) ? 0 : thread_masks[warp_to_schedule];
assign warp_num = warp_to_schedule;
assign update_use_wspawn = use_wsapwn[warp_to_schedule] && !global_stall;
assign new_pc = warp_pc + 4;
assign use_active = (num_active <= 1) ? (warp_active & (~warp_stalled)) : visible_active;
assign use_active = (num_active < 1) ? (warp_active & (~warp_stalled)) : visible_active;
// Choosing a warp to schedule
VX_priority_encoder choose_schedule(
@ -238,13 +247,6 @@ module VX_warp_scheduler (
);
VX_priority_encoder choose_wsapwn(
.valids(~warp_active),
.index (warp_to_wsapwn),
.found (found_wspawn)
);
// Valid counter
VX_one_counter valid_counter(
.valids(visible_active),
@ -252,7 +254,8 @@ module VX_warp_scheduler (
);
assign out_ebreak = (warp_active == 0);
wire ebreak = (warp_active == 0);
assign out_ebreak = ebreak;

View file

@ -13,6 +13,7 @@ interface VX_warp_ctl_inter ();
wire wspawn;
wire[31:0] wspawn_pc;
wire[`NW-1:0] wspawn_new_active;
wire ebreak;

View file

@ -1,7 +1,7 @@
# Dynamic Instructions: 36
# of total cycles: 50
# Dynamic Instructions: 52686
# of total cycles: 52701
# of forwarding stalls: 0
# of branch stalls: 0
# CPI: 1.38889
# time to simulate: 6.95313e-310 milliseconds
# CPI: 1.00028
# time to simulate: 0 milliseconds
# GRADE: Failed on test: 4294967295

View file

@ -1 +1 @@
#define VCD_OUTPUT
#define VCD_OFF

View file

@ -385,7 +385,7 @@ bool Vortex::simulate(std::string file_to_simulate)
// unsigned cycles;
counter = 0;
this->stats_total_cycles = 10;
while (this->stop && ((counter < 6)))
while (this->stop && ((counter < 2)))
// while (this->stats_total_cycles < 10)
{
// std::cout << "Counter: " << counter << "\n";