1998-03-06 22:46:40 +00:00
|
|
|
# PKE tests for code coverage / functional testing
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- STCYCL/CYCLE ---- [test.code.stcycl]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test STCYCL instruction
|
|
|
|
0 0x0100fedc_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Attempt erroneous write to CYCLE register
|
|
|
|
! 0x10003840 0x0000dead
|
|
|
|
# Read CYCLE register; confirm proper value
|
|
|
|
? 0x10003840 0x0000fedc 0xffffffff
|
|
|
|
# Read STAT register; confirm ER1 not set
|
|
|
|
? 0x10003800 0x00000000 0x00002000
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- BASE/BASE ---- [test.code.base] [test.dbf.base]
|
|
|
|
#
|
|
|
|
# Read TOPS register; confirm original TOPS
|
|
|
|
? 0x10003cc0 0x00000000 0xffffffff
|
|
|
|
# Test BASE instruction on PKE1
|
|
|
|
1 0x0300fedc_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Attempt erroneous write to BASE register
|
|
|
|
! 0x10003ca0 0x0000dead
|
|
|
|
# Read BASE register; confirm proper 10-bit value
|
|
|
|
? 0x10003ca0 0x000002dc 0xffffffff
|
|
|
|
# Read TOPS register; confirm unmodified TOPS
|
|
|
|
? 0x10003cc0 0x00000000 0xffffffff
|
|
|
|
# Read STAT register; confirm DBF=0
|
|
|
|
? 0x10003c00 0x00000000 0x00000080
|
|
|
|
# Read DBF register; confirm DBF=0
|
|
|
|
? 0x10003cf0 0x00000000 0x00000001
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# ---- OFFSET/OFST ---- [test.code.offset] [test.dbf.offset]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test OFFSET instruction on PKE1
|
|
|
|
1 0x0200ffff_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Attempt erroneous write to OFFSET register
|
|
|
|
! 0x10003cb0 0x0000dead
|
|
|
|
# Read OFST register; confirm proper 10-bit value
|
|
|
|
? 0x10003cb0 0x000003ff 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
# Read TOPS register; confirm recomputed TOPS
|
|
|
|
? 0x10003cc0 0x000002dc 0xffffffff
|
1998-02-25 01:08:47 +00:00
|
|
|
# Read STAT register; confirm DBF=0
|
|
|
|
? 0x10003c00 0x00000000 0x00000080
|
|
|
|
# Read DBF register; confirm DBF=0
|
|
|
|
? 0x10003cf0 0x00000000 0x00000001
|
|
|
|
# Read STAT register; confirm ER1 not set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- ITOP/ITOPS ---- [test.code.itop]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test ITOP instruction
|
|
|
|
0 0x0400ffff_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Attempt erroneous write to ITOPS register
|
|
|
|
! 0x10003890 0x0000dead
|
|
|
|
# Read ITOPS register; confirm proper 10-bit value
|
|
|
|
? 0x10003890 0x000003ff 0xffffffff
|
|
|
|
# Read STAT register; confirm ER1 not set
|
|
|
|
? 0x10003800 0x00000000 0x00002000
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- STMOD/MODE ---- [test.code.stmod]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test STMOD instruction
|
|
|
|
0 0x05000003_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Attempt erroneous write to MODE register
|
|
|
|
! 0x10003850 0x0000dead
|
|
|
|
# Read MODE register; confirm proper value
|
|
|
|
? 0x10003850 0x00000003 0xffffffff
|
|
|
|
# Test STMOD instruction with junk upper bits
|
|
|
|
0 0x0500dad1_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read MODE register; confirm proper value
|
|
|
|
? 0x10003850 0x00000001 0xffffffff
|
|
|
|
# Read STAT register; confirm ER1 not set
|
|
|
|
? 0x10003800 0x00000000 0x00002000
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- STMARK/MARK ---- [test.code.stmark]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test MARK instruction
|
|
|
|
0 0x0700abcd_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm MRK bit set
|
|
|
|
? 0x10003800 0x00000040 0x00000040
|
|
|
|
# Read MARK register
|
|
|
|
? 0x10003830 0x0000abcd 0xffffffff
|
|
|
|
# Write MARK register
|
|
|
|
! 0x10003830 0x00001234
|
|
|
|
# Read STAT register; confirm MRK bit clear
|
|
|
|
? 0x10003800 0x00000000 0x00000040
|
|
|
|
# Read MARK register
|
|
|
|
? 0x10003830 0x00001234 0xffffffff
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- bad PKEcode/ER1, interrupts ---- [test.code.bad] [test.stall.er1]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# A bad PKEcode
|
1998-03-06 22:46:40 +00:00
|
|
|
1 0x00000000_00000000_01000001_08000000 0x00000000 PPPP
|
1998-02-25 01:08:47 +00:00
|
|
|
# should put PKE into stalled mode, not executing following PKENOPs
|
|
|
|
# Read STAT register; confirm ER1 bit set
|
|
|
|
? 0x10003c00 0x00002000 0x00002000
|
1998-03-06 22:46:40 +00:00
|
|
|
# Read CODE register; confirm PKE is stuck just after bad code
|
|
|
|
? 0x10003c80 0x01000001 0xffffffff
|
1998-02-25 01:08:47 +00:00
|
|
|
# Reset PKE
|
|
|
|
! 0x10003c10 0x00000001
|
|
|
|
# Read STAT register; confirm ER1 no longer set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
1998-02-25 19:27:34 +00:00
|
|
|
#
|
|
|
|
# Mask ME1 (ER1 stall) this time
|
|
|
|
! 0x10003c20 0x00000004
|
1998-03-14 01:51:03 +00:00
|
|
|
# Some bad PKEcodes (UNPACK with bad vn/vl) with ER1 masked [test.unpack.bad]
|
|
|
|
1 0x01000001_6b000000_77000000_63000000 0x00000000 PPPP
|
1998-02-25 19:27:34 +00:00
|
|
|
# should not put PKE into stalled mode, should execute following PKENOPs
|
1998-03-14 01:51:03 +00:00
|
|
|
# Read STAT register; confirm ER1 bit still set
|
|
|
|
? 0x10003c00 0x00002000 0x00002000
|
1998-02-25 19:27:34 +00:00
|
|
|
# Read CODE register; confirm PKE went past bad code
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x10003c80 0x01000001 0xffffffff
|
1998-02-25 19:27:34 +00:00
|
|
|
# Reset PKE
|
|
|
|
! 0x10003c10 0x00000001
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# [test.stall.pis] [test.stall.int]
|
1998-02-25 19:27:34 +00:00
|
|
|
# A good PKEcode (STMOD) with interrupt
|
1998-03-06 22:46:40 +00:00
|
|
|
1 0x01000000_00000000_00000000_85000000 0x00000000 PPPP
|
1998-02-25 19:27:34 +00:00
|
|
|
# should put PKE into stalled mode, not executing following PKENOPs
|
1998-03-06 22:46:40 +00:00
|
|
|
# Read STAT register; confirm PIS & INT bits set, no ER1
|
|
|
|
? 0x10003c00 0x00000c00 0x00002c00
|
1998-02-25 19:27:34 +00:00
|
|
|
# Read CODE register; confirm PKE is stuck at bad code
|
|
|
|
? 0x10003c80 0x85000000 0xffffffff
|
|
|
|
# Resume PKE with STC
|
|
|
|
! 0x10003c10 0x00000008
|
1998-03-06 22:46:40 +00:00
|
|
|
# Read STAT register; confirm PIS & INT no longer set, no ER1
|
|
|
|
? 0x10003c00 0x00000000 0x00002c00
|
|
|
|
# Read CODE register; confirm PKE executed last instruction
|
|
|
|
? 0x10003c80 0x01000000 0xffffffff
|
|
|
|
#
|
|
|
|
# [test.stall.pis] [test.stall.int] [test.stall.int-masked]
|
|
|
|
# Mask INT stall: set ERR:MII
|
|
|
|
! 0x10003c20 0x00000001
|
|
|
|
# A good PKEcode (STMOD) with interrupt
|
|
|
|
1 0x01000001_00000000_00000000_85000000 0x00000000 PPPP
|
|
|
|
# should NOT put PKE into stalled mode
|
|
|
|
# Read STAT register; confirm INT bits set but no PIS, and no ER1
|
|
|
|
? 0x10003c00 0x00000800 0x00002c00
|
|
|
|
# Read CODE register; confirm PKE executed last instruction
|
|
|
|
? 0x10003c80 0x01000001 0xffffffff
|
|
|
|
#
|
|
|
|
# [test.stall.int-mark]
|
|
|
|
# Reset the PKE, unmasking interrupt
|
|
|
|
! 0x10003c10 0x00000001
|
|
|
|
# A good PKEcode (PKEMARK) with interrupt
|
|
|
|
1 0x01000002_01000001_0100000f_8700b00f 0x00000000 PPPP
|
|
|
|
# should NOT put PKE into stalled mode
|
|
|
|
# Read MARK register; confirm its value
|
|
|
|
? 0x10003c30 0x0000b00f 0xffffffff
|
|
|
|
# Read STAT register; confirm INT & PIS bits are set, and no ER1
|
|
|
|
? 0x10003c00 0x00000c00 0x00002c00
|
|
|
|
# Read CODE register; confirm PKE is stalled with following NOP instruction
|
|
|
|
? 0x10003c80 0x0100000f 0xffffffff
|
|
|
|
# Reset the PKE
|
|
|
|
! 0x10003c10 0x00000001
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- STMASK/MASK ---- [test.code.stmask]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test STMASK instruction; leave operand out for now
|
|
|
|
0 0x20000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm PPS field set at WAIT
|
|
|
|
? 0x10003800 0x00000001 0x00000003
|
|
|
|
# Add operand for STMASK instruction
|
1998-03-14 01:51:03 +00:00
|
|
|
0 0x00000000_00000000_00000000_1234abcd 0x00000000 PPP.
|
1998-02-25 01:08:47 +00:00
|
|
|
# Erroneous write to MASK register
|
|
|
|
! 0x10003870 0x98765432
|
|
|
|
# Read MASK register
|
|
|
|
? 0x10003870 0x1234abcd 0xffffffff
|
|
|
|
# Read STAT register; confirm ER1 not set
|
|
|
|
? 0x10003800 0x00000000 0x00002000
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- DIRECT/DIRECTHL ---- [test.code.direct] [test.code.directhl]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test DIRECT instruction; leave operand out for now
|
|
|
|
1 0x50000001_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm PPS field set at WAIT
|
|
|
|
? 0x10003c00 0x00000001 0x00000003
|
|
|
|
# Supply operand - it's a bad GPUIF tag
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 ....
|
|
|
|
# Test DIRECT instruction with bad operand alignment
|
|
|
|
1 0x00000000_50000001_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm ER1 bit set
|
|
|
|
? 0x10003c00 0x00002000 0x00002000
|
|
|
|
# Reset PKE
|
|
|
|
! 0x10003c10 0x00000001
|
1998-04-05 16:37:04 +00:00
|
|
|
# Reset GPUIF
|
|
|
|
! 0x10003000 0x00000001
|
1998-02-25 01:08:47 +00:00
|
|
|
# Read STAT register; confirm ER1 no longer set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
1998-03-06 22:46:40 +00:00
|
|
|
# Test DIRECTHL instruction with bad operand alignment
|
|
|
|
1 0x00000000_00000000_51000001_00000000 0x00000000 PPPP
|
1998-02-25 01:08:47 +00:00
|
|
|
# Read STAT register; confirm ER1 bit set
|
|
|
|
? 0x10003c00 0x00002000 0x00002000
|
|
|
|
# Reset PKE
|
|
|
|
! 0x10003c10 0x00000001
|
|
|
|
# Read STAT register; confirm ER1 no longer set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
1998-03-06 22:46:40 +00:00
|
|
|
# Test DIRECTHL instruction with bad operand alignment
|
|
|
|
1 0x00000000_00000000_00000000_51000001 0x00000000 PPPP
|
1998-02-25 01:08:47 +00:00
|
|
|
# Read STAT register; confirm ER1 bit set
|
|
|
|
? 0x10003c00 0x00002000 0x00002000
|
|
|
|
# Reset PKE
|
|
|
|
! 0x10003c10 0x00000001
|
|
|
|
# Read STAT register; confirm ER1 no longer set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- MPG - PKE0 ---- [test.code.mpg]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test MPG instruction; leave operand out for now
|
|
|
|
0 0x4a080000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm PPS field set at WAIT
|
|
|
|
? 0x10003800 0x00000001 0x00000003
|
|
|
|
# Supply operands - eight two junk VU instruction word-pairs with real source-addr's
|
|
|
|
0 0xdeadbeef_0bad0bad_beef0bad_2bad2bad 0x00000010 ....
|
|
|
|
0 0xabcdbeef_44332211_12987423_95555999 0x00000100 ....
|
|
|
|
0 0xdeadabcd_75577588_beef0bad_89abcdef 0x00001000 ....
|
|
|
|
0 0xa5a5a5a5_5aaa5533_01234567_77889900 0x00010000 ....
|
|
|
|
# Check that instructions were loaded properly
|
|
|
|
? 0x11000000 0x2bad2bad 0xffffffff
|
|
|
|
? 0x11000004 0xbeef0bad 0xffffffff
|
|
|
|
? 0x11000014 0x12987423 0xffffffff
|
|
|
|
? 0x11000028 0x75577588 0xffffffff
|
|
|
|
? 0x1100003c 0xa5a5a5a5 0xffffffff
|
|
|
|
# Check that source addresses were loaded properly
|
|
|
|
? 0x21000000 0x00000010 0xffffffff
|
|
|
|
? 0x21000004 0x00000010 0xffffffff
|
|
|
|
? 0x21000008 0x00000100 0xffffffff
|
|
|
|
? 0x2100000c 0x00000100 0xffffffff
|
|
|
|
? 0x21000010 0x00001000 0xffffffff
|
|
|
|
? 0x21000014 0x00001000 0xffffffff
|
|
|
|
? 0x21000018 0x00010000 0xffffffff
|
|
|
|
? 0x2100001c 0x00010000 0xffffffff
|
|
|
|
# Test MPG instruction with bad operand alignment
|
|
|
|
0 0x00000000_4a020000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm ER1 bit set
|
|
|
|
? 0x10003800 0x00002000 0x00002000
|
|
|
|
# Reset PKE
|
|
|
|
! 0x10003810 0x00000001
|
|
|
|
# Read STAT register; confirm ER1 no longer set
|
|
|
|
? 0x10003800 0x00000000 0x00002000
|
|
|
|
# Test MPG instruction with good operand alignment
|
|
|
|
0 0x00000000_00000000_4a010000_00000000 0x00000000 ..PP
|
|
|
|
# Read STAT register; confirm ER1 bit not set
|
|
|
|
? 0x10003800 0x00000000 0x00002000
|
|
|
|
# Test MPG instruction with bad operand alignment
|
|
|
|
0 0x00000000_00000000_00000000_4a010000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm ER1 bit set
|
|
|
|
? 0x10003800 0x00002000 0x00002000
|
|
|
|
# Reset PKE
|
|
|
|
! 0x10003810 0x00000001
|
|
|
|
# Read STAT register; confirm ER1 no longer set
|
|
|
|
? 0x10003800 0x00000000 0x00002000
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- MPG - PKE1 ---- [test.code.mpg]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test MPG instruction; leave operand out for now
|
|
|
|
1 0x4a080000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm PPS field set at WAIT
|
|
|
|
? 0x10003c00 0x00000001 0x00000003
|
|
|
|
# Supply operands - eight two junk VU instruction word-pairs with real source-addr's
|
|
|
|
1 0xdeadbeef_0bad0bad_beef0bad_2bad2bad 0x00000010 ....
|
|
|
|
1 0xabcdbeef_44332211_12987423_95555999 0x00000100 ....
|
|
|
|
1 0xdeadabcd_75577588_beef0bad_89abcdef 0x00001000 ....
|
|
|
|
1 0xa5a5a5a5_5aaa5533_01234567_77889900 0x00010000 ....
|
|
|
|
# Check that instructions were loaded properly
|
|
|
|
? 0x11008000 0x2bad2bad 0xffffffff
|
|
|
|
? 0x11008004 0xbeef0bad 0xffffffff
|
|
|
|
? 0x11008014 0x12987423 0xffffffff
|
|
|
|
? 0x11008028 0x75577588 0xffffffff
|
|
|
|
? 0x1100803c 0xa5a5a5a5 0xffffffff
|
|
|
|
# Check that source addresses were loaded properly
|
|
|
|
? 0x21008000 0x00000010 0xffffffff
|
|
|
|
? 0x21008004 0x00000010 0xffffffff
|
|
|
|
? 0x21008008 0x00000100 0xffffffff
|
|
|
|
? 0x2100800c 0x00000100 0xffffffff
|
|
|
|
? 0x21008010 0x00001000 0xffffffff
|
|
|
|
? 0x21008014 0x00001000 0xffffffff
|
|
|
|
? 0x21008018 0x00010000 0xffffffff
|
|
|
|
? 0x2100801c 0x00010000 0xffffffff
|
|
|
|
# Test MPG instruction with bad operand alignment
|
|
|
|
1 0x00000000_4a020000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm ER1 bit set
|
|
|
|
? 0x10003c00 0x00002000 0x00002000
|
|
|
|
# Reset PKE
|
|
|
|
! 0x10003c10 0x00000001
|
|
|
|
# Read STAT register; confirm ER1 no longer set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
|
|
|
# Test MPG instruction with good operand alignment
|
|
|
|
1 0x00000000_00000000_4a010000_00000000 0x00000000 ..PP
|
|
|
|
# Read STAT register; confirm ER1 bit not set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
|
|
|
# Test MPG instruction with bad operand alignment
|
|
|
|
1 0x00000000_00000000_00000000_4a010000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm ER1 bit set
|
|
|
|
? 0x10003c00 0x00002000 0x00002000
|
|
|
|
# Reset PKE
|
|
|
|
! 0x10003c10 0x00000001
|
|
|
|
# Read STAT register; confirm ER1 no longer set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- STROW/ROW + DMA mismatch ---- [test.code.strow] [test.dma.er0]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# Don't mask anything (including ER0)
|
|
|
|
! 0x10003820 0x00000000
|
1998-02-25 01:08:47 +00:00
|
|
|
# Test STROW instruction; leave operand out for now
|
|
|
|
0 0x30000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm PPS field set at WAIT
|
|
|
|
? 0x10003800 0x00000001 0x00000003
|
|
|
|
# Supply operand - four words
|
|
|
|
0 0x1234abcd_2345bcde_ffffffff_ffffffff 0x00000000 ..DD
|
|
|
|
# Read STAT register; confirm ER0 (DMA mismatch)
|
|
|
|
? 0x10003800 0x00001000 0x00001000
|
1998-03-06 22:46:40 +00:00
|
|
|
# Confirm that PKE is stalled at STROW instruction
|
|
|
|
? 0x10003880 0x30000000 0xffffffff
|
|
|
|
# Supply final few operand words
|
|
|
|
0 0x00000000_01000020_5432dcba_76543210 0x00000000 PP..
|
|
|
|
# Resume PKE with STC
|
|
|
|
! 0x10003810 0x00000008
|
1998-02-25 01:08:47 +00:00
|
|
|
# Make erroneous write
|
|
|
|
! 0x10003900 0x11111111
|
|
|
|
! 0x10003910 0x22222222
|
|
|
|
! 0x10003920 0x33333333
|
|
|
|
! 0x10003930 0x44444444
|
|
|
|
# Check row registers for value
|
|
|
|
? 0x10003900 0x2345bcde 0xffffffff
|
|
|
|
? 0x10003910 0x1234abcd 0xffffffff
|
|
|
|
? 0x10003920 0x76543210 0xffffffff
|
|
|
|
? 0x10003930 0x5432dcba 0xffffffff
|
|
|
|
# Reset PKE
|
|
|
|
! 0x10003810 0x00000001
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- STCOL/COL + STOP/CONTINUE ---- [test.code.stcol] [test.stall.fbk] [test.stall.pfs]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Test STCOL instruction; leave operand out for now
|
|
|
|
0 0x31000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm PPS field set at WAIT
|
|
|
|
? 0x10003800 0x00000001 0x00000003
|
|
|
|
# Stop PKE with FBK bit
|
|
|
|
! 0x10003810 0x00000002
|
|
|
|
# Supply operand - four words
|
|
|
|
0 0x1234abcd_2345bcde_5432dcba_76543210 0x00000000 ....
|
|
|
|
# Confirm that PKE is continuing to stall due to FBK
|
|
|
|
? 0x10003800 0x00000200 0x00000200
|
|
|
|
? 0x10003800 0x00000200 0x00000200
|
|
|
|
? 0x10003800 0x00000200 0x00000200
|
|
|
|
# Resume PKE with STC bit
|
|
|
|
! 0x10003810 0x00000008
|
|
|
|
# Read STAT register; confirm FBK no longer set
|
|
|
|
? 0x10003800 0x00000000 0x00000200
|
|
|
|
# Check column registers for value
|
|
|
|
? 0x10003940 0x76543210 0xffffffff
|
|
|
|
? 0x10003950 0x5432dcba 0xffffffff
|
|
|
|
? 0x10003960 0x2345bcde 0xffffffff
|
|
|
|
? 0x10003970 0x1234abcd 0xffffffff
|
|
|
|
# Read STAT register; confirm ER1 not set
|
|
|
|
? 0x10003800 0x00000000 0x00002000
|
|
|
|
#
|
1998-02-25 19:27:34 +00:00
|
|
|
# Try stopping using STP bit this time
|
1998-03-06 22:46:40 +00:00
|
|
|
# [test.stall.stp] [test.stall.wait] [test.stall.pss]
|
1998-02-25 19:27:34 +00:00
|
|
|
# Test STCOL instruction; leave operand out for now
|
|
|
|
1 0x31000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm PPS field set at WAIT
|
|
|
|
? 0x10003c00 0x00000001 0x00000003
|
|
|
|
# Stop PKE after current instruction with STP bit
|
|
|
|
! 0x10003c10 0x00000004
|
|
|
|
# Supply operand - four words
|
|
|
|
1 0x1234abcd_2345bcde_5432dcba_76543210 0x00000000 ....
|
|
|
|
# Check column registers for value
|
|
|
|
? 0x10003d40 0x76543210 0xffffffff
|
|
|
|
? 0x10003d50 0x5432dcba 0xffffffff
|
|
|
|
? 0x10003d60 0x2345bcde 0xffffffff
|
|
|
|
? 0x10003d70 0x1234abcd 0xffffffff
|
|
|
|
# Now send a new instruction with operands; this should stall
|
|
|
|
1 0x31000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x11111111_22222222_33333333_44444444 0x00000000 ....
|
|
|
|
# Confirm that PKE is continuing to stall due to PSS
|
|
|
|
? 0x10003c00 0x00000100 0x00000100
|
|
|
|
? 0x10003c00 0x00000100 0x00000100
|
|
|
|
? 0x10003c00 0x00000100 0x00000100
|
|
|
|
# Resume PKE with STC bit; it should process pent-up STCOL
|
|
|
|
! 0x10003c10 0x00000008
|
|
|
|
# Check column registers for value
|
|
|
|
? 0x10003d40 0x44444444 0xffffffff
|
|
|
|
? 0x10003d50 0x33333333 0xffffffff
|
|
|
|
? 0x10003d60 0x22222222 0xffffffff
|
|
|
|
? 0x10003d70 0x11111111 0xffffffff
|
|
|
|
# Read STAT register; confirm ER1 not set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
|
|
|
#
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- MSKPATH3 ---- [test.code.mskpath3]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
1998-04-05 16:37:04 +00:00
|
|
|
# Clear & set MSKPATH3 on PKE1
|
1998-02-25 01:08:47 +00:00
|
|
|
1 0x06008000_00000000_06000000_00000000 0x00000000 PPPP
|
1998-04-05 16:37:04 +00:00
|
|
|
# Check M3P & M3R fields of GPUIF STAT
|
|
|
|
? 0x10003020 0x00000002 0x00000003
|
|
|
|
# Clear MSKPATH3
|
|
|
|
1 0x06000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Check M3P & M3R fields of GPUIF STAT
|
|
|
|
? 0x10003020 0x00000000 0x00000003
|
1998-02-25 01:08:47 +00:00
|
|
|
# Read STAT register; confirm ER1 not set
|
|
|
|
? 0x10003c00 0x00000000 0x00002000
|
|
|
|
# Erroneously run this on PKE0
|
|
|
|
0 0x06008000_00000000_06000000_00000000 0x00000000 PPPP
|
|
|
|
# Read STAT register; confirm ER1 set
|
|
|
|
? 0x10003800 0x00002000 0x00002000
|
|
|
|
# Reset PKE0
|
|
|
|
! 0x10003810 0x00000001
|
|
|
|
#
|
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# ---- memory-mapped port reading ---- [test.mmap]
|
1998-02-25 01:08:47 +00:00
|
|
|
#
|
|
|
|
# Erroneously read words from FIFO ports
|
|
|
|
? 0x10004000 0x00000000 0xffffffff
|
|
|
|
? 0x10004004 0x00000000 0xffffffff
|
|
|
|
? 0x10004008 0x00000000 0xffffffff
|
|
|
|
? 0x1000400c 0x00000000 0xffffffff
|
|
|
|
? 0x10005000 0x00000000 0xffffffff
|
|
|
|
? 0x10005004 0x00000000 0xffffffff
|
|
|
|
? 0x10005008 0x00000000 0xffffffff
|
|
|
|
? 0x1000500c 0x00000000 0xffffffff
|
|
|
|
#
|
1998-02-25 19:27:34 +00:00
|
|
|
# Erroneously read PKE1-only registers on PKE0
|
|
|
|
? 0x100038a0 0x00000000 0xffffffff
|
|
|
|
? 0x100038b0 0x00000000 0xffffffff
|
|
|
|
? 0x100038c0 0x00000000 0xffffffff
|
|
|
|
? 0x100038e0 0x00000000 0xffffffff
|
|
|
|
? 0x100038f0 0x00000000 0xffffffff
|
|
|
|
#
|
|
|
|
# Erroneously write PKE1-only registers on PKE0
|
|
|
|
! 0x100038a0 0x00000000
|
|
|
|
! 0x100038b0 0x00000000
|
|
|
|
! 0x100038c0 0x00000000
|
|
|
|
! 0x100038e0 0x00000000
|
|
|
|
! 0x100038f0 0x00000000
|
|
|
|
#
|
|
|
|
# Erroneously read write-only registers
|
|
|
|
? 0x10003810 0x00000000 0xffffffff
|
|
|
|
? 0x10003c10 0x00000000 0xffffffff
|
|
|
|
#
|
|
|
|
# Erroneously write read-only registers
|
|
|
|
! 0x10003c00 0x00000000
|
|
|
|
! 0x10003c40 0x00000000
|
|
|
|
! 0x10003c50 0x00000000
|
|
|
|
! 0x10003c60 0x00000000
|
|
|
|
! 0x10003c70 0x00000000
|
|
|
|
! 0x10003c80 0x00000000
|
|
|
|
! 0x10003c90 0x00000000
|
|
|
|
! 0x10003ca0 0x00000000
|
|
|
|
! 0x10003cb0 0x00000000
|
|
|
|
! 0x10003cc0 0x00000000
|
|
|
|
! 0x10003cd0 0x00000000
|
|
|
|
! 0x10003ce0 0x00000000
|
|
|
|
! 0x10003cf0 0x00000000
|
|
|
|
! 0x10003d00 0x00000000
|
|
|
|
! 0x10003d10 0x00000000
|
|
|
|
! 0x10003d20 0x00000000
|
|
|
|
! 0x10003d30 0x00000000
|
|
|
|
! 0x10003d40 0x00000000
|
|
|
|
! 0x10003d50 0x00000000
|
|
|
|
! 0x10003d60 0x00000000
|
|
|
|
! 0x10003d70 0x00000000
|
1998-03-02 23:57:35 +00:00
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
# Erroneously read/write words between registers
|
|
|
|
! 0x10003c14 0xffffffff
|
|
|
|
! 0x10003c18 0xffffffff
|
|
|
|
! 0x10003c1c 0xffffffff
|
|
|
|
! 0x10003874 0xffffffff
|
|
|
|
! 0x10003884 0xffffffff
|
|
|
|
! 0x100038fc 0xffffffff
|
1998-03-02 23:57:35 +00:00
|
|
|
#
|
1998-03-06 22:46:40 +00:00
|
|
|
#
|
|
|
|
# ---- FLUSH/FLUSHE/FLUSHA & CALL/CALLF/CONT ---- [test.code.flush] [test.code.flushe]
|
|
|
|
# [test.code.flusha] [test.code.pkemscal] [test.code.pkemscalf] [test.code.pkemscnt]
|
|
|
|
# [test.stall.vu]
|
1998-03-02 23:57:35 +00:00
|
|
|
#
|
|
|
|
# Load a bunch of NOP[e]/NOP instructions into the VU
|
|
|
|
# 0x000002ff_8000033c == NOP NOP
|
|
|
|
# 0x400002ff_8000033c == NOP[e] NOP
|
1998-03-17 00:07:19 +00:00
|
|
|
# MPG 18 instructions
|
|
|
|
1 0x4a120001_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x000002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x000002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x000002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x000002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
1998-03-02 23:57:35 +00:00
|
|
|
1 0x000002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x000002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x000002ff_8000033c_400002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x400002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x400002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
# Start VU; FLUSH
|
1998-03-17 00:07:19 +00:00
|
|
|
1 0x14000000_14000000_00000000_00000000 0x00000000 PPPP
|
1998-03-06 22:46:40 +00:00
|
|
|
# Assert PEW bit on while waiting for VU
|
|
|
|
? 0x10003c00 0x00000004 0x00000004
|
1998-03-02 23:57:35 +00:00
|
|
|
# Send a few more NOPs to let VU get to first END
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Assert VU is in idle state
|
|
|
|
? 0x110073d0 0x00000000 0x00000200
|
|
|
|
# Resume/run/run/resume to check stall logic in PKEMSCNT/PKEMSCALF/PKEMSCAL
|
|
|
|
1 0x13000000_14000000_11000000_15000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_15000000_14000000_17000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x00000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
# Assert VU is in idle state
|
|
|
|
? 0x110073d0 0x00000000 0x00000200
|
1998-03-06 22:46:40 +00:00
|
|
|
#
|
|
|
|
#
|
|
|
|
# ---- DBF ---- [test.code.base] [test.code.offset] [test.dbf]
|
|
|
|
# [test.code.pkemscal] [test.code.pkemscalf] [test.code.pkemscnt]
|
|
|
|
#
|
|
|
|
# Load a bunch of NOP[e]/NOP instructions into the VU
|
|
|
|
# 0x000002ff_8000033c == NOP NOP
|
|
|
|
# 0x400002ff_8000033c == NOP[e] NOP
|
|
|
|
# MPG 10 instructions with lots of ENDs
|
|
|
|
1 0x4a0a0000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
1 0x400002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x000002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x000002ff_8000033c_400002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x400002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
1 0x000002ff_8000033c_000002ff_8000033c 0x00000000 ....
|
|
|
|
# Load BASE & OFFSET registers; stick in some DMA tags too [test.dma]
|
|
|
|
1 0x02000200_03000100_77777777_77777777 0x00000000 PPDD
|
|
|
|
# Confirm BASE & OFFSET & TOPS & TOP & DBF registers
|
|
|
|
? 0x10003ca0 0x00000100 0xffffffff
|
|
|
|
? 0x10003cb0 0x00000200 0xffffffff
|
|
|
|
? 0x10003cc0 0x00000100 0xffffffff
|
|
|
|
? 0x10003ce0 0x00000000 0xffffffff
|
|
|
|
? 0x10003cf0 0x00000000 0xffffffff
|
|
|
|
# Make one CALL
|
|
|
|
1 0x00000000_00000000_00000000_14000000 0x00000000 PPPP
|
|
|
|
# Confirm TOP & DBF & TOPS registers after DBF flip
|
|
|
|
? 0x10003ce0 0x00000100 0xffffffff
|
|
|
|
? 0x10003cf0 0x00000001 0xffffffff
|
|
|
|
? 0x10003cc0 0x00000300 0xffffffff
|
|
|
|
# Make one CALLF
|
|
|
|
1 0x00000000_00000000_00000000_15000000 0x00000000 PPPP
|
|
|
|
# Confirm TOP & DBF & TOPS registers after DBF flip
|
|
|
|
? 0x10003ce0 0x00000300 0xffffffff
|
|
|
|
? 0x10003cf0 0x00000000 0xffffffff
|
|
|
|
? 0x10003cc0 0x00000100 0xffffffff
|
|
|
|
# Make one CONT
|
|
|
|
1 0x00000000_00000000_00000000_17000000 0x00000000 PPPP
|
|
|
|
# Confirm TOP & DBF & TOPS registers after DBF flip
|
|
|
|
? 0x10003ce0 0x00000100 0xffffffff
|
|
|
|
? 0x10003cf0 0x00000001 0xffffffff
|
|
|
|
? 0x10003cc0 0x00000300 0xffffffff
|
|
|
|
#
|
|
|
|
#
|
1998-03-14 01:51:03 +00:00
|
|
|
# ---- MPG/UNPACK address overflow tests ----
|
1998-03-06 22:46:40 +00:00
|
|
|
#
|
1998-03-14 01:51:03 +00:00
|
|
|
# RESET PKE0
|
|
|
|
! 0x10003810 0x00000001
|
|
|
|
# UNPACK to PKE0 near top of address range
|
1998-03-06 22:46:40 +00:00
|
|
|
# [test.unpack.V3_32] [test.code.stcycl] [test.unpack.endian] [test.unpack.unsigned]
|
1998-03-14 01:51:03 +00:00
|
|
|
# [test.unpack.no-r] [test.ext.unpackaddr] [test.track.unpack]
|
|
|
|
0 0x6804ffff_01000101_77777777_55555555 0x00000ff0 PPDD
|
|
|
|
0 0x33330333_22222022_11111101_ccccccc0 0x0000ff00 ....
|
|
|
|
0 0x07777777_60666666_55055555_44404444 0x000ff000 ....
|
|
|
|
0 0xbbbb0bbb_aaaaa0aa_99999909_88888880 0x00ff0000 ....
|
1998-03-06 22:46:40 +00:00
|
|
|
# Assert that all words were written correctly
|
|
|
|
? 0x11004ff0 0xccccccc0 0xffffffff
|
|
|
|
? 0x11004ff4 0x11111101 0xffffffff
|
|
|
|
? 0x11004ff8 0x22222022 0xffffffff
|
|
|
|
? 0x11004ffc 0x00000000 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x210043fc 0x0000ff00 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
? 0x11004000 0x33330333 0xffffffff
|
|
|
|
? 0x11004004 0x44404444 0xffffffff
|
|
|
|
? 0x11004008 0x55055555 0xffffffff
|
|
|
|
? 0x1100400c 0x00000000 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x21004000 0x000ff000 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
? 0x11004010 0x60666666 0xffffffff
|
|
|
|
? 0x11004014 0x07777777 0xffffffff
|
|
|
|
? 0x11004018 0x88888880 0xffffffff
|
|
|
|
? 0x1100401c 0x00000000 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x21004004 0x00ff0000 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
? 0x11004020 0x99999909 0xffffffff
|
|
|
|
? 0x11004024 0xaaaaa0aa 0xffffffff
|
|
|
|
? 0x11004028 0xbbbb0bbb 0xffffffff
|
|
|
|
? 0x1100402c 0x00000000 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x21004008 0x00ff0000 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
#
|
1998-03-14 01:51:03 +00:00
|
|
|
# RESET PKE1
|
|
|
|
! 0x10003c10 0x00000001
|
|
|
|
# UNPACK to PKE1 near top of PKE1 address range [test.unpack.V4_5]
|
|
|
|
# [test.unpack.signed] [test.unpack.r] [test.ext.unpackaddr]
|
|
|
|
1 0x02000100_00000100_99999999_33333333 0x0ff00000 PPDD
|
|
|
|
1 0x6f05bfff_01000101_77777777_55555555 0x00ff0000 PPDD
|
|
|
|
1 0x00000000_77779999_deadbeef_aaaa5555 0x000ff000 P...
|
1998-03-06 22:46:40 +00:00
|
|
|
# Assert that all words were written correctly
|
|
|
|
? 0x1100fff0 0xfffffff5 0xffffffff
|
|
|
|
? 0x1100fff4 0x0000000a 0xffffffff
|
|
|
|
? 0x1100fff8 0xfffffff5 0xffffffff
|
|
|
|
? 0x1100fffc 0x00000000 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x2100cffc 0x000ff000 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
? 0x1100c000 0x0000000a 0xffffffff
|
|
|
|
? 0x1100c004 0xfffffff5 0xffffffff
|
|
|
|
? 0x1100c008 0x0000000a 0xffffffff
|
|
|
|
? 0x1100c00c 0x00000001 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x2100c000 0x000ff000 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
? 0x1100c010 0x0000000f 0xffffffff
|
|
|
|
? 0x1100c014 0xfffffff7 0xffffffff
|
|
|
|
? 0x1100c018 0x0000000f 0xffffffff
|
|
|
|
? 0x1100c01c 0x00000001 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x2100c004 0x000ff000 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
? 0x1100c020 0x0000000d 0xffffffff
|
|
|
|
? 0x1100c024 0xfffffff5 0xffffffff
|
|
|
|
? 0x1100c028 0xfffffff7 0xffffffff
|
|
|
|
? 0x1100c02c 0x00000001 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x2100c008 0x000ff000 0xffffffff
|
1998-03-06 22:46:40 +00:00
|
|
|
? 0x1100c030 0xfffffff9 0xffffffff
|
|
|
|
? 0x1100c034 0x0000000c 0xffffffff
|
|
|
|
? 0x1100c038 0x00000006 0xffffffff
|
|
|
|
? 0x1100c03c 0x00000001 0xffffffff
|
1998-03-14 01:51:03 +00:00
|
|
|
? 0x2100c00c 0x000ff000 0xffffffff
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# MPG to PKE0 near top of address range
|
|
|
|
# [test.mpg] [test.mpg.endian] [test.ext.mpgaddr] [test.track.mpg]
|
|
|
|
#
|
|
|
|
0 0x4a04ffff_01000000_77777777_55555555 0x0000ee00 PPDD
|
|
|
|
0 0x33330333_22222022_11111101_ccccccc0 0x000ee000 ....
|
|
|
|
0 0x07777777_60666666_55055555_44404444 0x00ee0000 ....
|
|
|
|
# Assert that all words were written correctly
|
|
|
|
? 0x11000ff8 0xccccccc0 0xffffffff
|
|
|
|
? 0x11000ffc 0x11111101 0xffffffff
|
|
|
|
? 0x210007fc 0x000ee000 0xffffffff
|
|
|
|
? 0x11000000 0x22222022 0xffffffff
|
|
|
|
? 0x11000004 0x33330333 0xffffffff
|
|
|
|
? 0x21000000 0x000ee000 0xffffffff
|
|
|
|
? 0x11000008 0x44404444 0xffffffff
|
|
|
|
? 0x1100000c 0x55055555 0xffffffff
|
|
|
|
? 0x21000004 0x00ee0000 0xffffffff
|
|
|
|
? 0x11000010 0x60666666 0xffffffff
|
|
|
|
? 0x11000014 0x07777777 0xffffffff
|
|
|
|
? 0x21000008 0x00ee0000 0xffffffff
|
|
|
|
#
|
|
|
|
# MPG to PKE1 near top of address range
|
|
|
|
# [test.mpg] [test.mpg.endian] [test.ext.mpgaddr] [test.track.mpg]
|
|
|
|
#
|
|
|
|
1 0x4a04ffff_01000000_77777777_55555555 0x0000ee00 PPDD
|
|
|
|
1 0x33330333_22222022_11111101_ccccccc0 0x000ee000 ....
|
|
|
|
1 0x07777777_60666666_55055555_44404444 0x00ee0000 ....
|
|
|
|
# Assert that all words were written correctly
|
|
|
|
? 0x1100bff8 0xccccccc0 0xffffffff
|
|
|
|
? 0x1100bffc 0x11111101 0xffffffff
|
|
|
|
? 0x21009ffc 0x000ee000 0xffffffff
|
|
|
|
? 0x11008000 0x22222022 0xffffffff
|
|
|
|
? 0x11008004 0x33330333 0xffffffff
|
|
|
|
? 0x21008000 0x000ee000 0xffffffff
|
|
|
|
? 0x11008008 0x44404444 0xffffffff
|
|
|
|
? 0x1100800c 0x55055555 0xffffffff
|
|
|
|
? 0x21008004 0x00ee0000 0xffffffff
|
|
|
|
? 0x11008010 0x60666666 0xffffffff
|
|
|
|
? 0x11008014 0x07777777 0xffffffff
|
|
|
|
? 0x21008008 0x00ee0000 0xffffffff
|
|
|
|
#
|
|
|
|
#
|
|
|
|
# UNPACK with MASK & MODE processing
|
|
|
|
# [test.unpack.mask] [test.unpack.mode.2] [test.unpack.cycle.0.1]
|
|
|
|
#
|
|
|
|
# RESET PKE0
|
|
|
|
! 0x10003810 0x00000001
|
|
|
|
#
|
|
|
|
# Preset VU0 data memory to funky words
|
|
|
|
# Set registers COL / ROW / MASK=10 for rows>0 / MODE=2 / CYCLE=0001
|
|
|
|
0 0xaaffaa00_20000000_05000002_01000001 0x00000000 .PPP
|
|
|
|
# STROW: initial values for accumulator
|
|
|
|
0 0x30000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
0 0x00000040_00000030_00000020_00000010 0x00000000 ....
|
|
|
|
# STCOL: initial values for accumulator
|
|
|
|
0 0x31000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
0 0x00004000_00003000_00002000_00001000 0x00000000 ....
|
|
|
|
# Unpack 256 V4_8 vectors, w/ values from ROWS regs
|
|
|
|
0 0xffffffff_7e000000_00000000_00000000 0x00000000 .PPP
|
|
|
|
# Confirm appropriate values filled: ROW0 - 1
|
|
|
|
? 0x11004000 0x0000000f 0xffffffff
|
|
|
|
? 0x11004004 0x0000001f 0xffffffff
|
|
|
|
? 0x11004008 0x0000002f 0xffffffff
|
|
|
|
? 0x1100400c 0x0000003f 0xffffffff
|
|
|
|
# this should be COL1
|
|
|
|
? 0x11004010 0x00002000 0xffffffff
|
|
|
|
? 0x11004014 0x00002000 0xffffffff
|
|
|
|
? 0x11004018 0x00002000 0xffffffff
|
|
|
|
? 0x1100401c 0x00002000 0xffffffff
|
|
|
|
# this should be the old data (write-inhibited) [test.mask.write-inhibit]
|
|
|
|
? 0x11004020 0x99999909 0xffffffff
|
|
|
|
? 0x11004024 0xaaaaa0aa 0xffffffff
|
|
|
|
? 0x11004028 0xbbbb0bbb 0xffffffff
|
|
|
|
? 0x1100402c 0x00000000 0xffffffff
|
|
|
|
# these should be COL3 [test.mask.col3clamp]
|
|
|
|
? 0x11004030 0x00004000 0xffffffff
|
|
|
|
? 0x11004034 0x00004000 0xffffffff
|
|
|
|
? 0x11004038 0x00004000 0xffffffff
|
|
|
|
? 0x1100403c 0x00004000 0xffffffff
|
|
|
|
? 0x11004050 0x00004000 0xffffffff
|
|
|
|
? 0x11004054 0x00004000 0xffffffff
|
|
|
|
? 0x11004058 0x00004000 0xffffffff
|
|
|
|
? 0x1100405c 0x00004000 0xffffffff
|
|
|
|
#
|
|
|
|
# Set registers ROW / MASK / MODE=1 / CYCLE=0101
|
|
|
|
0 0x00000000_20000000_05000001_01000101 0x00000000 .PPP
|
|
|
|
# STROW: initial values for accumulator
|
|
|
|
0 0x30000000_00000000_00000000_00000000 0x00000000 PPPP
|
|
|
|
0 0x0000ff00_0000ee00_0000dd00_0000cc00 0x00000000 ....
|
|
|
|
# Unpack one V1_8 vector [test.unpack.1.8] [test.unpack.unsigned]
|
|
|
|
0 0x00000000_00000000_000000cc_72014000 0x00000000 PP.P
|
|
|
|
# Confirm
|
|
|
|
? 0x11004000 0x0000cccc 0xffffffff
|
|
|
|
? 0x11004004 0x0000ddcc 0xffffffff
|
|
|
|
? 0x11004008 0x0000eecc 0xffffffff
|
|
|
|
? 0x1100400c 0x0000ffcc 0xffffffff
|
|
|
|
# Unpack one V2_8 vector [test.unpack.2.8] [test.unpack.unsigned]
|
|
|
|
0 0x00000000_00000000_000077cc_76014010 0x00000000 PP.P
|
|
|
|
# Confirm
|
|
|
|
? 0x11004100 0x0000cccc 0xffffffff
|
|
|
|
? 0x11004104 0x0000dd77 0xffffffff
|
|
|
|
? 0x11004108 0x0000ee00 0xffffffff
|
|
|
|
? 0x1100410c 0x0000ff00 0xffffffff
|