mirror of
https://github.com/vortexgpgpu/vortex.git
synced 2025-04-24 05:47:35 -04:00
Added vector mask instructions
This commit is contained in:
parent
a2f284d6f3
commit
b4ebc803f3
5 changed files with 1543 additions and 1111 deletions
|
@ -9,7 +9,14 @@ vx_vec_test:
|
|||
li a0, 10
|
||||
sw a0, 0(a1)
|
||||
sw a0, 32(a1)
|
||||
vlw.v v0, (a1)
|
||||
vadd.vv v0, v0, v0
|
||||
vsw.v v0, (a1)
|
||||
vlw.v v1, (a1)
|
||||
li a2, 1
|
||||
sw a2, 0(a3)
|
||||
li a2, 0
|
||||
sw a2, 32(a3)
|
||||
vlw.v v0, (a3)
|
||||
vmor.mm v0, v0, v3
|
||||
vadd.vv v1, v1, v1, v0.t
|
||||
vsw.v v1, (a1)
|
||||
vlw.v v5, (a1)
|
||||
ret
|
||||
|
|
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -1,220 +1,222 @@
|
|||
:0200000480007A
|
||||
:10000000970500009385C506130540006B10B500E9
|
||||
:10001000EF00C005130510006B000500138581C3B8
|
||||
:100020001386C1C33306A64093050000EF00901D60
|
||||
:10003000171500001305858DEF00D008EF00D012D2
|
||||
:10004000130540006B000500EF0010046F00D0089E
|
||||
:100020001386C1C33306A64093050000EF00501F9E
|
||||
:10003000171500001305458FEF00900AEF0090148C
|
||||
:10004000130540006B000500EF00D0056F00900A1B
|
||||
:10005000B707000093870700638807003715008003
|
||||
:10006000130585906F00100667800000130540009F
|
||||
:10006000130545926F00D00767800000130540001C
|
||||
:100070006B0005009711000093814179F32610026F
|
||||
:100080009396A601732600029315A6001316260068
|
||||
:1000900037F1FF6F3301B1403301D1403301C1006B
|
||||
:1000A000F326100263860600130500006B000500AE
|
||||
:1000B0006780000013052000D77285001305A0009B
|
||||
:1000C00023A0A50023A0A50207E005125700000207
|
||||
:1000D00027E0050267800000130101FD232681024D
|
||||
:1000E00013040103232EA4FC232CB4FC232AC4FCF8
|
||||
:1000F0008327C4FD83A707002326F4FE930744FD4E
|
||||
:100100002322F4FE832744FE03C707008327C4FE8F
|
||||
:100110002380E7008327C4FE93871700032744FE4C
|
||||
:10012000034717002380E7008327C4FE9387270037
|
||||
:10013000032744FE034727002380E7008327C4FEEC
|
||||
:1001400093873700032744FE034737002380E700E7
|
||||
:100150008327C4FE938747002326F4FE232404FE4E
|
||||
:100160006F004003832784FE032784FDB307F70055
|
||||
:1001700003C707008327C4FE2380E7008327C4FE4C
|
||||
:10018000938717002326F4FE832784FE93871700A6
|
||||
:100190002324F4FE832744FD032784FEE344F7FC75
|
||||
:1001A0008327C4FE2320F4FE832704FE93F7370041
|
||||
:1001B000032704FEB307F7002320F4FE832704FE81
|
||||
:1001C0002326F4FE8327C4FD0327C4FE23A0E700F3
|
||||
:1001D000130000000324C102130101036780000023
|
||||
:1001E000130101FC232E8102130401042326A4FC25
|
||||
:1001F0002324B4FC8327C4FC83A707002326F4FE32
|
||||
:100200009307C4FD2322F4FE8327C4FE03C707001F
|
||||
:10021000832744FE2380E700832744FE938717004B
|
||||
:100220000327C4FE034717002380E700832744FE0B
|
||||
:10023000938727000327C4FE034727002380E70096
|
||||
:10024000832744FE938737000327C4FE0347370004
|
||||
:100250002380E7008327C4FE938747002326F4FE0C
|
||||
:10026000232404FE6F004003832784FE032784FCBD
|
||||
:10027000B307F7000327C4FE034707002380E70006
|
||||
:100280008327C4FE938717002326F4FE832784FE6A
|
||||
:10029000938717002324F4FE8327C4FD032784FEDD
|
||||
:1002A000E344F7FC8327C4FE2320F4FE832704FEE7
|
||||
:1002B00093F73700032704FEB307F7002320F4FE6B
|
||||
:1002C000832704FE2326F4FE8327C4FC0327C4FEF1
|
||||
:1002D00023A0E700130000000324C103130101045D
|
||||
:1002E00067800000130101FF232681001304010130
|
||||
:1002F000130000000324C100130101016780000006
|
||||
:10030000130101FE232E8100130401022326A4FE03
|
||||
:100310002324B4FE832784FE3727000023A2E700AE
|
||||
:1003200093070000138507000324C1011301010294
|
||||
:1003300067800000130101FE232E1100232C810091
|
||||
:10034000130401022326A4FEB7170080138507CDEE
|
||||
:10035000EF00C04F93071000138507008320C101F1
|
||||
:10036000032481011301010267800000130101FDD4
|
||||
:10037000232611022324810213040103232EA4FC4B
|
||||
:10038000232CB4FC232AC4FCB70700712326F4FEF7
|
||||
:10039000B70700722324F4FE930730002322F4FEF3
|
||||
:1003A000130744FE9307C4FE13064000930507009D
|
||||
:1003B00013850700EFF05FD21307C4FD9307C4FE57
|
||||
:1003C000130640009305070013850700EFF0DFD008
|
||||
:1003D000130784FD9307C4FE13064000930507002E
|
||||
:1003E00013850700EFF05FCF130744FD9307C4FEAA
|
||||
:1003F000130640009305070013850700EFF0DFCDDB
|
||||
:1004000083A7C1C2E7800700130704FE930784FE99
|
||||
:100410009305070013850700EFF09FDC832704FE98
|
||||
:10042000138507008320C102032481021301010305
|
||||
:1004300067800000130101FD23261102232481029D
|
||||
:1004400013040103232EA4FC232CB4FC232AC4FC94
|
||||
:10045000B70700712324F4FEB70700722326F4FEC9
|
||||
:10046000930740002322F4FE130744FE930784FE03
|
||||
:10047000130640009305070013850700EFF0DFC562
|
||||
:100480001307C4FD930784FE13064000930507007D
|
||||
:1004900013850700EFF05FC4130784FD930784FE04
|
||||
:1004A000130640009305070013850700EFF0DFC235
|
||||
:1004B000130744FD930784FE1306400093050700CD
|
||||
:1004C00013850700EFF05FC183A7C1C2E780070073
|
||||
:1004D000832744FD138507008320C1020324810282
|
||||
:1004E0001301010367800000130101FD232611029F
|
||||
:1004F0002324810213040103232EA4FC232CB4FC27
|
||||
:10050000232AC4FCB70700712326F4FE930750008A
|
||||
:100510002324F4FE130784FE9307C4FE1306400051
|
||||
:100520009305070013850700EFF01FBB1307C4FDF9
|
||||
:100530009307C4FE130640009305070013850700C8
|
||||
:10054000EFF09FB99307C4FE032644FD832584FD85
|
||||
:1005500013850700EFF05FB883A7C1C2E7800700EB
|
||||
:10056000832744FD138507008320C10203248102F1
|
||||
:100570001301010367800000130101FD232681029E
|
||||
:1005800013040103232EA4FC8327C4FD63D80700B2
|
||||
:100590008327C4FDB307F040232EF4FC0327C4FDDA
|
||||
:1005A000B73700009387078063D8E700B7370000AC
|
||||
:1005B00093870780232EF4FC83A701C32326F4FE30
|
||||
:1005C00003A701C38327C4FD3307F70023A8E1C2B3
|
||||
:1005D0008327C4FE138507000324C102130101030E
|
||||
:1005E00067800000130101FE232E1100232C8100DF
|
||||
:1005F000130401022326A4FE13050000EF00001ED1
|
||||
:10060000130000008320C1010324810113010102B2
|
||||
:1006100067800000130101FD2326110223248102BB
|
||||
:1006200013040103232EA4FC232CB4FC232AC4FCB2
|
||||
:10063000B70700712326F4FEB70700722324F4FEE7
|
||||
:10064000930770002322F4FE130744FE9307C4FEB1
|
||||
:10065000130640009305070013850700EFF0DFA79E
|
||||
:100660001307C4FD9307C4FE13064000930507005B
|
||||
:1006700013850700EFF05FA6130784FD9307C4FE00
|
||||
:10068000130640009305070013850700EFF0DFA471
|
||||
:10069000130744FD9307C4FE1306400093050700AB
|
||||
:1006A00013850700EFF05FA383A7C1C2E7800700AF
|
||||
:1006B000130704FE930784FE9305070013850700C4
|
||||
:1006C000EFF01FB2832704FE138507008320C102C9
|
||||
:1006D000032481021301010367800000130101FF5D
|
||||
:1006E000232611002324810013040101B717008081
|
||||
:1006F000138547CEEF008015130000008320C10052
|
||||
:10070000032481001301010167800000130101FF30
|
||||
:10071000232611002324810013040101EF00800E21
|
||||
:1007200093070500138507008320C100032481007F
|
||||
:100730001301010167800000130101FF232611004E
|
||||
:100740002324810013040101B7170080138587D08B
|
||||
:10075000EF00C00F130000008320C10003248100BC
|
||||
:100760001301010167800000130101FF232611001E
|
||||
:100770002324810013040101B71700801385C7D219
|
||||
:10078000EF00C00C83A781C39386170023ACD1C2AE
|
||||
:10079000138507008320C100032481001301010198
|
||||
:1007A00067800000130101FF23261100232481002C
|
||||
:1007B00013040101B7170080138587D5EF000009E6
|
||||
:1007C000130000008320C1000324810013010101F4
|
||||
:1007D000678000006B10B500678000006B000500AB
|
||||
:1007E000678000006B40B500678000006B2005004B
|
||||
:1007F000678000006B3000006780000073251002E6
|
||||
:100800006780000073250002678000001305400028
|
||||
:100810006B000500F32610029396F6007326000283
|
||||
:100820009315A6001316260037F1FF6F3301B14070
|
||||
:100830003301D1403301C100F32610026386060064
|
||||
:10084000130500006B00050067800000130141FFE5
|
||||
:10085000232011002322B100834505006388050091
|
||||
:10086000EF00C001130515006FF01FFF832001008A
|
||||
:10087000832541001301C10067800000B702010019
|
||||
:1008800023A0B20067800000130101FF232611009E
|
||||
:10089000232481001304010113051000EFF01FF45D
|
||||
:1008A000EFF05F8113050000EFF05FF3130000002D
|
||||
:1008B000138507008320C100032481001301010177
|
||||
:1008C00067800000930505009306000013060000F2
|
||||
:1008D000130500006F00C020130101FF9305000005
|
||||
:1008E000232481002326110013040500EF00C028F3
|
||||
:1008F00003A581C28327C50363840700E78007003F
|
||||
:1009000013050400EFF01FCE130101FF2324810023
|
||||
:100910002322910037140080B7140080938744008D
|
||||
:10092000130444003304F4402326110013542440DC
|
||||
:1009300063020402931424009384C4FFB384F4007C
|
||||
:1009400083A704001304F4FF9384C4FFE780070027
|
||||
:10095000E31804FE8320C1000324810083244100A6
|
||||
:100960001301010167800000130101FF23248100AE
|
||||
:1009700023202101371400803719008093070400D9
|
||||
:10098000130909003309F94023261100232291009D
|
||||
:100990001359294063000902130404009304000062
|
||||
:1009A000832704009384140013044400E7800700A5
|
||||
:1009B000E31899FE3714008037190080930704006C
|
||||
:1009C000130949003309F94013592940630009020A
|
||||
:1009D000130404009304000083270400938414008C
|
||||
:1009E00013044400E7800700E31899FE8320C10048
|
||||
:1009F0000324810083244100032901001301010124
|
||||
:100A0000678000001303F00013070500637EC30234
|
||||
:100A10009377F7006390070A63920508937606FFC1
|
||||
:100A20001376F600B386E6002320B7002322B70032
|
||||
:100A30002324B7002326B70013070701E366D7FE78
|
||||
:100A40006314060067800000B306C3409396260037
|
||||
:100A500097020000B38656006780C6002307B700E0
|
||||
:100A6000A306B7002306B700A305B7002305B70008
|
||||
:100A7000A304B7002304B700A303B7002303B70000
|
||||
:100A8000A302B7002302B700A301B7002301B700F8
|
||||
:100A9000A300B7002300B7006780000093F5F50FAF
|
||||
:100AA00093968500B3E5D50093960501B3E5D5008F
|
||||
:100AB0006FF0DFF69396270097020000B38656008A
|
||||
:100AC00093820000E78006FA93800200938707FF75
|
||||
:100AD0003307F7403306F600E378C3F66FF0DFF331
|
||||
:100AE00003A781C283278714638C070403A74700E9
|
||||
:100AF0001308F001634EE806131827006306050289
|
||||
:100B0000338307012324C30883A887181306100022
|
||||
:100B10003316E600B3E8C80023A417192324D31022
|
||||
:100B2000930620006304D5021307170023A2E700F1
|
||||
:100B3000B387070123A4B7001305000067800000F6
|
||||
:100B40009307C7142324F7146FF05FFA83A6C7181E
|
||||
:100B50001307170023A2E70033E6C60023A6C71831
|
||||
:100B6000B387070123A4B7001305000067800000C6
|
||||
:100B70001305F0FF67800000130101FD23248101AC
|
||||
:100B800003AC81C2232E3101232C4101232A5101C0
|
||||
:100B900023286101232611022324810223229102AA
|
||||
:100BA0002320210323267101930A0500138B0500DE
|
||||
:100BB000130A10009309F0FF03298C14630809023B
|
||||
:100BC000832449001384F4FF6342040293942400B5
|
||||
:100BD000B304990063040B0483A744106380670582
|
||||
:100BE0001304F4FF9384C4FFE31634FF8320C1028F
|
||||
:100BF0000324810283244102032901028329C101C4
|
||||
:100C0000032A8101832A4101032B0101832BC100A7
|
||||
:100C1000032C810013010103678000008327490032
|
||||
:100C200083A644009387F7FF638A870423A2040006
|
||||
:100C3000E38806FA8327891833178A00832B490033
|
||||
:100C4000B377F700639E0700E7800600832749001B
|
||||
:100C5000E39477F783278C14E38427F96FF0DFF5AB
|
||||
:100C60008327C91883A544083377F700631C07005E
|
||||
:100C700013850A00E78006006FF05FFD23228900DC
|
||||
:100C80006FF01FFB13850500E78006006FF01FFC67
|
||||
:100C9000300000003100000032000000330000008E
|
||||
:100CA000340000003500000036000000370000006E
|
||||
:100CB0003800000039000000610000006200000000
|
||||
:100CC0006300000064000000650000006600000092
|
||||
:100CD00048656C6C6F2066726F6D205F697361741C
|
||||
:100CE00074790A004552524F523A205F6B696C6C1E
|
||||
:100CF000206E6F742079657420696D706C656D6508
|
||||
:100D00006E7465640A0000004552524F523A205FEB
|
||||
:100D1000756E6C696E6B206E6F74207965742069D6
|
||||
:100D20006D706C656D656E7465640A004552524F56
|
||||
:100D3000523A205F67657474696D656F66646179A6
|
||||
:100D4000206E6F742079657420696D706C656D65B7
|
||||
:100D50006E7465640A0000004552524F523A205F9B
|
||||
:100D60006C696E6B206E6F742079657420696D708C
|
||||
:0A0D70006C656D656E7465640A0021
|
||||
:1000C00023A0A50023A0A50287E0051213061000B7
|
||||
:1000D00023A0C6001306000023A0C60207E00612F4
|
||||
:1000E00057A0016AD7801000A7E0050287E2051239
|
||||
:1000F00067800000130101FD232681021304010320
|
||||
:10010000232EA4FC232CB4FC232AC4FC8327C4FD87
|
||||
:1001100083A707002326F4FE930744FD2322F4FE61
|
||||
:10012000832744FE03C707008327C4FE2380E7001C
|
||||
:100130008327C4FE93871700032744FE0347170055
|
||||
:100140002380E7008327C4FE93872700032744FE0C
|
||||
:10015000034727002380E7008327C4FE93873700E7
|
||||
:10016000032744FE034737002380E7008327C4FEAC
|
||||
:10017000938747002326F4FE232404FE6F004003E8
|
||||
:10018000832784FE032784FDB307F70003C7070016
|
||||
:100190008327C4FE2380E7008327C4FE93871700CC
|
||||
:1001A0002326F4FE832784FE938717002324F4FE7E
|
||||
:1001B000832744FD032784FEE344F7FC8327C4FE22
|
||||
:1001C0002320F4FE832704FE93F73700032704FE61
|
||||
:1001D000B307F7002320F4FE832704FE2326F4FE52
|
||||
:1001E0008327C4FD0327C4FE23A0E70013000000FB
|
||||
:1001F0000324C1021301010367800000130101FC05
|
||||
:10020000232E8102130401042326A4FC2324B4FC1E
|
||||
:100210008327C4FC83A707002326F4FE9307C4FDAD
|
||||
:100220002322F4FE8327C4FE03C70700832744FE6E
|
||||
:100230002380E700832744FE938717000327C4FE2B
|
||||
:10024000034717002380E700832744FE9387270096
|
||||
:100250000327C4FE034727002380E700832744FECB
|
||||
:10026000938737000327C4FE034737002380E70046
|
||||
:100270008327C4FE938747002326F4FE232404FE2D
|
||||
:100280006F004003832784FE032784FCB307F70035
|
||||
:100290000327C4FE034707002380E7008327C4FE2B
|
||||
:1002A000938717002326F4FE832784FE9387170085
|
||||
:1002B0002324F4FE8327C4FD032784FEE344F7FCD4
|
||||
:1002C0008327C4FE2320F4FE832704FE93F7370020
|
||||
:1002D000032704FEB307F7002320F4FE832704FE60
|
||||
:1002E0002326F4FE8327C4FC0327C4FE23A0E700D3
|
||||
:1002F000130000000324C103130101046780000000
|
||||
:10030000130101FF232681001304010113000000E3
|
||||
:100310000324C1001301010167800000130101FEE5
|
||||
:10032000232E8100130401022326A4FE2324B4FEFD
|
||||
:10033000832784FE3727000023A2E70093070000ED
|
||||
:10034000138507000324C101130101026780000027
|
||||
:10035000130101FE232E1100232C8100130401023E
|
||||
:100360002326A4FEB71700801385C7CEEF00C04F29
|
||||
:1003700093071000138507008320C1010324810126
|
||||
:100380001301010267800000130101FD2326110201
|
||||
:100390002324810213040103232EA4FC232CB4FC88
|
||||
:1003A000232AC4FCB70700712326F4FEB7070072A6
|
||||
:1003B0002324F4FE930730002322F4FE130744FEA7
|
||||
:1003C0009307C4FE1306400093050700138507003A
|
||||
:1003D000EFF05FD21307C4FD9307C4FE130640007D
|
||||
:1003E0009305070013850700EFF0DFD0130784FDA6
|
||||
:1003F0009307C4FE1306400093050700138507000A
|
||||
:10040000EFF05FCF130744FD9307C4FE13064000CF
|
||||
:100410009305070013850700EFF0DFCD83A7C1C266
|
||||
:10042000E7800700130704FE930784FE9305070087
|
||||
:1004300013850700EFF09FDC832704FE1385070078
|
||||
:100440008320C1020324810213010103678000009D
|
||||
:10045000130101FD23261102232481021304010349
|
||||
:10046000232EA4FC232CB4FC232AC4FCB707007160
|
||||
:100470002324F4FEB70700722326F4FE93074000FE
|
||||
:100480002322F4FE130744FE930784FE1306400064
|
||||
:100490009305070013850700EFF0DFC51307C4FDC0
|
||||
:1004A000930784FE13064000930507001385070099
|
||||
:1004B000EFF05FC4130784FD930784FE130640002A
|
||||
:1004C0009305070013850700EFF0DFC2130744FD13
|
||||
:1004D000930784FE13064000930507001385070069
|
||||
:1004E000EFF05FC183A7C1C2E7800700832744FD07
|
||||
:1004F000138507008320C102032481021301010335
|
||||
:1005000067800000130101FD2326110223248102CC
|
||||
:1005100013040103232EA4FC232CB4FC232AC4FCC3
|
||||
:10052000B70700712326F4FE930750002324F4FE3E
|
||||
:10053000130784FE9307C4FE1306400093050700CB
|
||||
:1005400013850700EFF01FBB1307C4FD9307C4FE1C
|
||||
:10055000130640009305070013850700EFF09FB9CD
|
||||
:100560009307C4FE032644FD832584FD13850700FD
|
||||
:10057000EFF05FB883A7C1C2E7800700832744FD7F
|
||||
:10058000138507008320C1020324810213010103A4
|
||||
:1005900067800000130101FD23268102130401037B
|
||||
:1005A000232EA4FC8327C4FD63D807008327C4FD42
|
||||
:1005B000B307F040232EF4FC0327C4FDB737000037
|
||||
:1005C0009387078063D8E700B737000093870780D9
|
||||
:1005D000232EF4FC83A701C32326F4FE03A701C343
|
||||
:1005E0008327C4FD3307F70023A8E1C28327C4FE95
|
||||
:1005F000138507000324C102130101036780000073
|
||||
:10060000130101FE232E1100232C8100130401028B
|
||||
:100610002326A4FE13050000EF00001E13000000B7
|
||||
:100620008320C101032481011301010267800000BE
|
||||
:10063000130101FD23261102232481021304010367
|
||||
:10064000232EA4FC232CB4FC232AC4FCB70700717E
|
||||
:100650002326F4FEB70700722324F4FE93077000EC
|
||||
:100660002322F4FE130744FE9307C4FE1306400042
|
||||
:100670009305070013850700EFF0DFA71307C4FDFC
|
||||
:100680009307C4FE13064000930507001385070077
|
||||
:10069000EFF05FA6130784FD9307C4FE1306400026
|
||||
:1006A0009305070013850700EFF0DFA4130744FD4F
|
||||
:1006B0009307C4FE13064000930507001385070047
|
||||
:1006C000EFF05FA383A7C1C2E7800700130704FE12
|
||||
:1006D000930784FE9305070013850700EFF01FB210
|
||||
:1006E000832704FE138507008320C10203248102AF
|
||||
:1006F0001301010367800000130101FF232611008D
|
||||
:100700002324810013040101B7170080138507D04B
|
||||
:10071000EF008015130000008320C1000324810036
|
||||
:100720001301010167800000130101FF232611005E
|
||||
:100730002324810013040101EF00800E93070500BC
|
||||
:10074000138507008320C1000324810013010101E8
|
||||
:1007500067800000130101FF23261100232481007C
|
||||
:1007600013040101B7170080138547D2EF00C00FB3
|
||||
:10077000130000008320C100032481001301010144
|
||||
:1007800067800000130101FF23261100232481004C
|
||||
:1007900013040101B7170080138587D4EF00C00C44
|
||||
:1007A00083A781C39386170023ACD1C213850700AA
|
||||
:1007B0008320C10003248100130101016780000030
|
||||
:1007C000130101FF232611002324810013040101DA
|
||||
:1007D000B7170080138547D7EF000009130000000A
|
||||
:1007E0008320C10003248100130101016780000000
|
||||
:1007F0006B10B500678000006B000500678000008B
|
||||
:100800006B40B500678000006B200500678000002A
|
||||
:100810006B300000678000007325100267800000C5
|
||||
:100820007325000267800000130540006B0005007F
|
||||
:10083000F32610029396F600732600029315A60085
|
||||
:100840001316260037F1FF6F3301B1403301D14059
|
||||
:100850003301C100F3261002638606001305000071
|
||||
:100860006B00050067800000130141FF2320110089
|
||||
:100870002322B1008345050063880500EF00C00115
|
||||
:10088000130515006FF01FFF832001008325410031
|
||||
:100890001301C10067800000B702010023A0B2006D
|
||||
:1008A00067800000130101FF23261100232481002B
|
||||
:1008B0001304010113051000EFF01FF4EFF08FFF98
|
||||
:1008C00013050000EFF05FF313000000138507002D
|
||||
:1008D0008320C1000324810013010101678000000F
|
||||
:1008E00093050500930600001306000013050000A1
|
||||
:1008F0006F00C020130101FF930500002324810035
|
||||
:100900002326110013040500EF00C02803A581C2AF
|
||||
:100910008327C50363840700E780070013050400ED
|
||||
:10092000EFF01FCE130101FF232481002322910049
|
||||
:1009300037140080B71400809387440013044400E8
|
||||
:100940003304F440232611001354244063020402AC
|
||||
:10095000931424009384C4FFB384F40083A7040099
|
||||
:100960001304F4FF9384C4FFE7800700E31804FE38
|
||||
:100970008320C1000324810083244100130101016D
|
||||
:1009800067800000130101FF23248100232021013F
|
||||
:1009900037140080371900809307040013090900F9
|
||||
:1009A0003309F940232611002322910013592940CD
|
||||
:1009B0006300090213040400930400008327040069
|
||||
:1009C0009384140013044400E7800700E31899FEA1
|
||||
:1009D0003714008037190080930704001309490079
|
||||
:1009E0003309F94013592940630009021304040034
|
||||
:1009F000930400008327040093841400130444002C
|
||||
:100A0000E7800700E31899FE8320C10003248100DA
|
||||
:100A100083244100032901001301010167800000C4
|
||||
:100A20001303F00013070500637EC3029377F700FA
|
||||
:100A30006390070A63920508937606FF1376F60023
|
||||
:100A4000B386E6002320B7002322B7002324B70093
|
||||
:100A50002326B70013070701E366D7FE63140600D9
|
||||
:100A600067800000B306C3409396260097020000FB
|
||||
:100A7000B38656006780C6002307B700A306B700F9
|
||||
:100A80002306B700A305B7002305B700A304B700EA
|
||||
:100A90002304B700A303B7002303B700A302B700E2
|
||||
:100AA0002302B700A301B7002301B700A300B700DA
|
||||
:100AB0002300B7006780000093F5F50F939685003B
|
||||
:100AC000B3E5D50093960501B3E5D5006FF0DFF6E9
|
||||
:100AD0009396270097020000B38656009382000089
|
||||
:100AE000E78006FA93800200938707FF3307F740F9
|
||||
:100AF0003306F600E378C3F66FF0DFF303A781C295
|
||||
:100B000083278714638C070403A747001308F001A9
|
||||
:100B1000634EE806131827006306050233830701B6
|
||||
:100B20002324C30883A88718130610003316E60091
|
||||
:100B3000B3E8C80023A417192324D3109306200078
|
||||
:100B40006304D5021307170023A2E700B387070148
|
||||
:100B500023A4B70013050000678000009307C714A3
|
||||
:100B60002324F7146FF05FFA83A6C7181307170042
|
||||
:100B700023A2E70033E6C60023A6C718B387070100
|
||||
:100B800023A4B70013050000678000001305F0FFE1
|
||||
:100B900067800000130101FD2324810103AC81C2A1
|
||||
:100BA000232E3101232C4101232A510123286101E5
|
||||
:100BB00023261102232481022322910223202103D0
|
||||
:100BC00023267101930A0500138B0500130A1000F8
|
||||
:100BD0009309F0FF03298C14630809028324490058
|
||||
:100BE0001384F4FF6342040293942400B304990035
|
||||
:100BF00063040B0483A74410638067051304F4FFA8
|
||||
:100C00009384C4FFE31634FF8320C10203248102CE
|
||||
:100C100083244102032901028329C101032A81019E
|
||||
:100C2000832A4101032B0101832BC100032C810086
|
||||
:100C300013010103678000008327490083A6440055
|
||||
:100C40009387F7FF638A870423A20400E38806FAE8
|
||||
:100C50008327891833178A00832B4900B377F7005D
|
||||
:100C6000639E0700E780060083274900E39477F737
|
||||
:100C700083278C14E38427F96FF0DFF58327C918E5
|
||||
:100C800083A544083377F700631C070013850A0027
|
||||
:100C9000E78006006FF05FFD232289006FF01FFBE5
|
||||
:0C0CA00013850500E78006006FF01FFCC4
|
||||
:100CAC003000000031000000320000003300000072
|
||||
:100CBC003400000035000000360000003700000052
|
||||
:100CCC0038000000390000006100000062000000E4
|
||||
:100CDC006300000064000000650000006600000076
|
||||
:100CEC0048656C6C6F2066726F6D205F6973617400
|
||||
:100CFC0074790A004552524F523A205F6B696C6C02
|
||||
:100D0C00206E6F742079657420696D706C656D65EB
|
||||
:100D1C006E7465640A0000004552524F523A205FCF
|
||||
:100D2C00756E6C696E6B206E6F74207965742069BA
|
||||
:100D3C006D706C656D656E7465640A004552524F3A
|
||||
:100D4C00523A205F67657474696D656F666461798A
|
||||
:100D5C00206E6F742079657420696D706C656D659B
|
||||
:100D6C006E7465640A0000004552524F523A205F7F
|
||||
:100D7C006C696E6B206E6F742079657420696D7070
|
||||
:0A0D8C006C656D656E7465640A0005
|
||||
:04100000500000801C
|
||||
:1010080000000000F41200805C130080C41300800C
|
||||
:1010180000000000000000000000000000000000C8
|
||||
|
|
|
@ -1102,25 +1102,60 @@ void Instruction::executeOn(Warp &c, trace_inst_t * trace_inst) {
|
|||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
vector<Reg<char *>> mask = c.vreg[0];
|
||||
|
||||
if (c.vtype.vsew == 8)
|
||||
{
|
||||
for (uint8_t i = 0; i < c.vl; i++)
|
||||
{
|
||||
uint8_t *mask_ptr = (uint8_t*) mask[i].val;
|
||||
uint8_t value = (*mask_ptr & 0x1);
|
||||
if(vmask || (!vmask && value)){
|
||||
uint8_t * first_ptr = (uint8_t *) vr1[i].val;
|
||||
uint8_t * second_ptr = (uint8_t *) vr2[i].val;
|
||||
uint8_t result = *first_ptr + *second_ptr;
|
||||
cout << "Adding " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
} else if (c.vtype.vsew == 16)
|
||||
{
|
||||
|
||||
for (uint16_t i = 0; i < c.vl; i++)
|
||||
{
|
||||
uint16_t *mask_ptr = (uint16_t*) mask[i].val;
|
||||
uint16_t value = (*mask_ptr & 0x1);
|
||||
if(vmask || (!vmask && value)){
|
||||
uint16_t * first_ptr = (uint16_t *) vr1[i].val;
|
||||
uint16_t * second_ptr = (uint16_t *) vr2[i].val;
|
||||
uint16_t result = *first_ptr + *second_ptr;
|
||||
cout << "Adding " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
}
|
||||
} else if (c.vtype.vsew == 32)
|
||||
{
|
||||
cout << "Doing 32 bit vector addition\n";
|
||||
for (Word i = 0; i < c.vl; i++)
|
||||
{
|
||||
int * first_ptr = (int *) vr1[i].val;
|
||||
int * second_ptr = (int *) vr2[i].val;
|
||||
int result = *first_ptr + *second_ptr;
|
||||
cout << "Adding " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
int *mask_ptr = (int*) mask[i].val;
|
||||
int value = (*mask_ptr & 0x1);
|
||||
if(vmask || (!vmask && value)){
|
||||
int * first_ptr = (int *) vr1[i].val;
|
||||
int * second_ptr = (int *) vr2[i].val;
|
||||
int result = *first_ptr + *second_ptr;
|
||||
cout << "Adding " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
int * result_ptr = (int *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
int * result_ptr = (int *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1470,6 +1505,387 @@ void Instruction::executeOn(Warp &c, trace_inst_t * trace_inst) {
|
|||
break;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
switch(func6){
|
||||
case 24: //vmandnot
|
||||
{
|
||||
D(3, "vmandnot");
|
||||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
if(c.vtype.vsew == 8){
|
||||
for(uint8_t i = 0; i < c.vl; i++){
|
||||
uint8_t *first_ptr = (uint8_t *)vr1[i].val;
|
||||
uint8_t *second_ptr = (uint8_t *)vr2[i].val;
|
||||
uint8_t first_value = (*first_ptr & 0x1);
|
||||
uint8_t second_value = (*second_ptr & 0x1);
|
||||
uint8_t result = (first_value & !second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 16) {
|
||||
for(uint16_t i = 0; i < c.vl; i++){
|
||||
uint16_t *first_ptr = (uint16_t *)vr1[i].val;
|
||||
uint16_t *second_ptr = (uint16_t *)vr2[i].val;
|
||||
uint16_t first_value = (*first_ptr & 0x1);
|
||||
uint16_t second_value = (*second_ptr & 0x1);
|
||||
uint16_t result = (first_value & !second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 32) {
|
||||
for(uint32_t i = 0; i < c.vl; i++){
|
||||
uint32_t *first_ptr = (uint32_t *)vr1[i].val;
|
||||
uint32_t *second_ptr = (uint32_t *)vr2[i].val;
|
||||
uint32_t first_value = (*first_ptr & 0x1);
|
||||
uint32_t second_value = (*second_ptr & 0x1);
|
||||
uint32_t result = (first_value & !second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint32_t * result_ptr = (uint32_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 25: //vmand
|
||||
{
|
||||
D(3, "vmand");
|
||||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
if(c.vtype.vsew == 8){
|
||||
for(uint8_t i = 0; i < c.vl; i++){
|
||||
uint8_t *first_ptr = (uint8_t *)vr1[i].val;
|
||||
uint8_t *second_ptr = (uint8_t *)vr2[i].val;
|
||||
uint8_t first_value = (*first_ptr & 0x1);
|
||||
uint8_t second_value = (*second_ptr & 0x1);
|
||||
uint8_t result = (first_value & second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 16) {
|
||||
for(uint16_t i = 0; i < c.vl; i++){
|
||||
uint16_t *first_ptr = (uint16_t *)vr1[i].val;
|
||||
uint16_t *second_ptr = (uint16_t *)vr2[i].val;
|
||||
uint16_t first_value = (*first_ptr & 0x1);
|
||||
uint16_t second_value = (*second_ptr & 0x1);
|
||||
uint16_t result = (first_value & second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 32) {
|
||||
for(uint32_t i = 0; i < c.vl; i++){
|
||||
uint32_t *first_ptr = (uint32_t *)vr1[i].val;
|
||||
uint32_t *second_ptr = (uint32_t *)vr2[i].val;
|
||||
uint32_t first_value = (*first_ptr & 0x1);
|
||||
uint32_t second_value = (*second_ptr & 0x1);
|
||||
uint32_t result = (first_value & second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint32_t * result_ptr = (uint32_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 26: //vmor
|
||||
{
|
||||
D(3, "vmor");
|
||||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
if(c.vtype.vsew == 8){
|
||||
for(uint8_t i = 0; i < c.vl; i++){
|
||||
uint8_t *first_ptr = (uint8_t *)vr1[i].val;
|
||||
uint8_t *second_ptr = (uint8_t *)vr2[i].val;
|
||||
uint8_t first_value = (*first_ptr & 0x1);
|
||||
uint8_t second_value = (*second_ptr & 0x1);
|
||||
uint8_t result = (first_value | second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
} else if(c.vtype.vsew == 16) {
|
||||
for(uint16_t i = 0; i < c.vl; i++){
|
||||
uint16_t *first_ptr = (uint16_t *)vr1[i].val;
|
||||
uint16_t *second_ptr = (uint16_t *)vr2[i].val;
|
||||
uint16_t first_value = (*first_ptr & 0x1);
|
||||
uint16_t second_value = (*second_ptr & 0x1);
|
||||
uint16_t result = (first_value | second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 32) {
|
||||
for(uint32_t i = 0; i < c.vl; i++){
|
||||
uint32_t *first_ptr = (uint32_t *)vr1[i].val;
|
||||
uint32_t *second_ptr = (uint32_t *)vr2[i].val;
|
||||
uint32_t first_value = (*first_ptr & 0x1);
|
||||
uint32_t second_value = (*second_ptr & 0x1);
|
||||
uint32_t result = (first_value | second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint32_t * result_ptr = (uint32_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 27: //vmxor
|
||||
{
|
||||
D(3, "vmxor");
|
||||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
if(c.vtype.vsew == 8){
|
||||
for(uint8_t i = 0; i < c.vl; i++){
|
||||
uint8_t *first_ptr = (uint8_t *)vr1[i].val;
|
||||
uint8_t *second_ptr = (uint8_t *)vr2[i].val;
|
||||
uint8_t first_value = (*first_ptr & 0x1);
|
||||
uint8_t second_value = (*second_ptr & 0x1);
|
||||
uint8_t result = (first_value ^ second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 16) {
|
||||
for(uint16_t i = 0; i < c.vl; i++){
|
||||
uint16_t *first_ptr = (uint16_t *)vr1[i].val;
|
||||
uint16_t *second_ptr = (uint16_t *)vr2[i].val;
|
||||
uint16_t first_value = (*first_ptr & 0x1);
|
||||
uint16_t second_value = (*second_ptr & 0x1);
|
||||
uint16_t result = (first_value ^ second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 32) {
|
||||
for(uint32_t i = 0; i < c.vl; i++){
|
||||
uint32_t *first_ptr = (uint32_t *)vr1[i].val;
|
||||
uint32_t *second_ptr = (uint32_t *)vr2[i].val;
|
||||
uint32_t first_value = (*first_ptr & 0x1);
|
||||
uint32_t second_value = (*second_ptr & 0x1);
|
||||
uint32_t result = (first_value ^ second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint32_t * result_ptr = (uint32_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 28: //vmornot
|
||||
{
|
||||
D(3, "vmornot");
|
||||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
if(c.vtype.vsew == 8){
|
||||
for(uint8_t i = 0; i < c.vl; i++){
|
||||
uint8_t *first_ptr = (uint8_t *)vr1[i].val;
|
||||
uint8_t *second_ptr = (uint8_t *)vr2[i].val;
|
||||
uint8_t first_value = (*first_ptr & 0x1);
|
||||
uint8_t second_value = (*second_ptr & 0x1);
|
||||
uint8_t result = (first_value | !second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 16) {
|
||||
for(uint16_t i = 0; i < c.vl; i++){
|
||||
uint16_t *first_ptr = (uint16_t *)vr1[i].val;
|
||||
uint16_t *second_ptr = (uint16_t *)vr2[i].val;
|
||||
uint16_t first_value = (*first_ptr & 0x1);
|
||||
uint16_t second_value = (*second_ptr & 0x1);
|
||||
uint16_t result = (first_value | !second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 32) {
|
||||
for(uint32_t i = 0; i < c.vl; i++){
|
||||
uint32_t *first_ptr = (uint32_t *)vr1[i].val;
|
||||
uint32_t *second_ptr = (uint32_t *)vr2[i].val;
|
||||
uint32_t first_value = (*first_ptr & 0x1);
|
||||
uint32_t second_value = (*second_ptr & 0x1);
|
||||
uint32_t result = (first_value | !second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint32_t * result_ptr = (uint32_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 29: //vmnand
|
||||
{
|
||||
D(3, "vmnand");
|
||||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
if(c.vtype.vsew == 8){
|
||||
for(uint8_t i = 0; i < c.vl; i++){
|
||||
uint8_t *first_ptr = (uint8_t *)vr1[i].val;
|
||||
uint8_t *second_ptr = (uint8_t *)vr2[i].val;
|
||||
uint8_t first_value = (*first_ptr & 0x1);
|
||||
uint8_t second_value = (*second_ptr & 0x1);
|
||||
uint8_t result = !(first_value & second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 16) {
|
||||
for(uint16_t i = 0; i < c.vl; i++){
|
||||
uint16_t *first_ptr = (uint16_t *)vr1[i].val;
|
||||
uint16_t *second_ptr = (uint16_t *)vr2[i].val;
|
||||
uint16_t first_value = (*first_ptr & 0x1);
|
||||
uint16_t second_value = (*second_ptr & 0x1);
|
||||
uint16_t result = !(first_value & second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 32) {
|
||||
for(uint32_t i = 0; i < c.vl; i++){
|
||||
uint32_t *first_ptr = (uint32_t *)vr1[i].val;
|
||||
uint32_t *second_ptr = (uint32_t *)vr2[i].val;
|
||||
uint32_t first_value = (*first_ptr & 0x1);
|
||||
uint32_t second_value = (*second_ptr & 0x1);
|
||||
uint32_t result = !(first_value & second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint32_t * result_ptr = (uint32_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 30: //vmnor
|
||||
{
|
||||
D(3, "vmnor");
|
||||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
if(c.vtype.vsew == 8){
|
||||
for(uint8_t i = 0; i < c.vl; i++){
|
||||
uint8_t *first_ptr = (uint8_t *)vr1[i].val;
|
||||
uint8_t *second_ptr = (uint8_t *)vr2[i].val;
|
||||
uint8_t first_value = (*first_ptr & 0x1);
|
||||
uint8_t second_value = (*second_ptr & 0x1);
|
||||
uint8_t result = !(first_value | second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 16) {
|
||||
for(uint16_t i = 0; i < c.vl; i++){
|
||||
uint16_t *first_ptr = (uint16_t *)vr1[i].val;
|
||||
uint16_t *second_ptr = (uint16_t *)vr2[i].val;
|
||||
uint16_t first_value = (*first_ptr & 0x1);
|
||||
uint16_t second_value = (*second_ptr & 0x1);
|
||||
uint16_t result = !(first_value | second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 32) {
|
||||
for(uint32_t i = 0; i < c.vl; i++){
|
||||
uint32_t *first_ptr = (uint32_t *)vr1[i].val;
|
||||
uint32_t *second_ptr = (uint32_t *)vr2[i].val;
|
||||
uint32_t first_value = (*first_ptr & 0x1);
|
||||
uint32_t second_value = (*second_ptr & 0x1);
|
||||
uint32_t result = !(first_value | second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint32_t * result_ptr = (uint32_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 31: //vmxnor
|
||||
{
|
||||
D(3, "vmxnor");
|
||||
vector<Reg<char *>> vr1 = c.vreg[rsrc[0]];
|
||||
vector<Reg<char *>> vr2 = c.vreg[rsrc[1]];
|
||||
vector<Reg<char *>> vd = c.vreg[rdest];
|
||||
if(c.vtype.vsew == 8){
|
||||
for(uint8_t i = 0; i < c.vl; i++){
|
||||
uint8_t *first_ptr = (uint8_t *)vr1[i].val;
|
||||
uint8_t *second_ptr = (uint8_t *)vr2[i].val;
|
||||
uint8_t first_value = (*first_ptr & 0x1);
|
||||
uint8_t second_value = (*second_ptr & 0x1);
|
||||
uint8_t result = !(first_value ^ second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint8_t * result_ptr = (uint8_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 16) {
|
||||
for(uint16_t i = 0; i < c.vl; i++){
|
||||
uint16_t *first_ptr = (uint16_t *)vr1[i].val;
|
||||
uint16_t *second_ptr = (uint16_t *)vr2[i].val;
|
||||
uint16_t first_value = (*first_ptr & 0x1);
|
||||
uint16_t second_value = (*second_ptr & 0x1);
|
||||
uint16_t result = !(first_value ^ second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint16_t * result_ptr = (uint16_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
|
||||
} else if(c.vtype.vsew == 32) {
|
||||
for(uint32_t i = 0; i < c.vl; i++){
|
||||
uint32_t *first_ptr = (uint32_t *)vr1[i].val;
|
||||
uint32_t *second_ptr = (uint32_t *)vr2[i].val;
|
||||
uint32_t first_value = (*first_ptr & 0x1);
|
||||
uint32_t second_value = (*second_ptr & 0x1);
|
||||
uint32_t result = !(first_value ^ second_value);
|
||||
cout << "Comparing " << *first_ptr << " + " << *second_ptr << " = " << result << '\n';
|
||||
|
||||
uint32_t * result_ptr = (uint32_t *) vd[i].val;
|
||||
*result_ptr = result;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 7:
|
||||
{
|
||||
is_vec = true;
|
||||
|
@ -1497,7 +1913,7 @@ void Instruction::executeOn(Warp &c, trace_inst_t * trace_inst) {
|
|||
for (int i = 0; i < (c.VLEN/vsew); ++i)
|
||||
{
|
||||
int * elem_ptr = (int *) malloc(vsew/8);
|
||||
for (int f = 0; f < (vsew/32); f++) elem_ptr[f] = 1;
|
||||
for (int f = 0; f < (vsew/32); f++) elem_ptr[f] = 0;
|
||||
c.vreg[j].push_back(Reg<char*>(c.id, regNum++, (char *) elem_ptr));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue