old-cross-binutils/sim/testsuite/sky/t-pke3.trc
Frank Ch. Eigler 86a6094133 * Added "test0" test bucket from SCEI. Due to changes in the behavior specs
of PKE, some old test cases had to be modified.  There are suspected bugs
  in the SCEI test cases too, so "make check" does not run cleanly at present.

	* tss*.trc: New files, generated by perl script from
	SCEI "test0" bucket.

	* tsv*.trc: New files, generated by perl script from SCEI "test0"
 	bucket.  Note that tsv432_0 may obsolete t-pke1.

	* Makefile.in (TESTS): Run new scripts.
	(check): Bulldoze through failing test cases with "make -k" until
 	SCEI fixes some of them.
	(.run.ok): Increased run-time limit since some test runs can take
 	several seconds.
1998-03-14 01:51:03 +00:00

733 lines
26 KiB
Text

# PKE tests for code coverage / functional testing
#
#
# ---- STCYCL/CYCLE ---- [test.code.stcycl]
#
# 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
#
#
# ---- 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]
#
# 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
# Read TOPS register; confirm recomputed TOPS
? 0x10003cc0 0x000002dc 0xffffffff
# 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
#
#
# ---- ITOP/ITOPS ---- [test.code.itop]
#
# 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
#
#
# ---- STMOD/MODE ---- [test.code.stmod]
#
# 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
#
#
# ---- STMARK/MARK ---- [test.code.stmark]
#
# 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
#
#
# ---- bad PKEcode/ER1, interrupts ---- [test.code.bad] [test.stall.er1]
#
# A bad PKEcode
1 0x00000000_00000000_01000001_08000000 0x00000000 PPPP
# should put PKE into stalled mode, not executing following PKENOPs
# Read STAT register; confirm ER1 bit set
? 0x10003c00 0x00002000 0x00002000
# Read CODE register; confirm PKE is stuck just after bad code
? 0x10003c80 0x01000001 0xffffffff
# Reset PKE
! 0x10003c10 0x00000001
# Read STAT register; confirm ER1 no longer set
? 0x10003c00 0x00000000 0x00002000
#
# Mask ME1 (ER1 stall) this time
! 0x10003c20 0x00000004
# Some bad PKEcodes (UNPACK with bad vn/vl) with ER1 masked [test.unpack.bad]
1 0x01000001_6b000000_77000000_63000000 0x00000000 PPPP
# should not put PKE into stalled mode, should execute following PKENOPs
# Read STAT register; confirm ER1 bit still set
? 0x10003c00 0x00002000 0x00002000
# Read CODE register; confirm PKE went past bad code
? 0x10003c80 0x01000001 0xffffffff
# Reset PKE
! 0x10003c10 0x00000001
#
# [test.stall.pis] [test.stall.int]
# A good PKEcode (STMOD) with interrupt
1 0x01000000_00000000_00000000_85000000 0x00000000 PPPP
# should put PKE into stalled mode, not executing following PKENOPs
# Read STAT register; confirm PIS & INT bits set, no ER1
? 0x10003c00 0x00000c00 0x00002c00
# Read CODE register; confirm PKE is stuck at bad code
? 0x10003c80 0x85000000 0xffffffff
# Resume PKE with STC
! 0x10003c10 0x00000008
# 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
#
#
# ---- STMASK/MASK ---- [test.code.stmask]
#
# 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
0 0x00000000_00000000_00000000_1234abcd 0x00000000 PPP.
# Erroneous write to MASK register
! 0x10003870 0x98765432
# Read MASK register
? 0x10003870 0x1234abcd 0xffffffff
# Read STAT register; confirm ER1 not set
? 0x10003800 0x00000000 0x00002000
#
#
# ---- DIRECT/DIRECTHL ---- [test.code.direct] [test.code.directhl]
#
# 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
# Read STAT register; confirm ER1 no longer set
? 0x10003c00 0x00000000 0x00002000
# Test DIRECTHL instruction with bad operand alignment
1 0x00000000_00000000_51000001_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 DIRECTHL instruction with bad operand alignment
1 0x00000000_00000000_00000000_51000001 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
#
#
# ---- MPG - PKE0 ---- [test.code.mpg]
#
# 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
#
#
# ---- MPG - PKE1 ---- [test.code.mpg]
#
# 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
#
#
# ---- STROW/ROW + DMA mismatch ---- [test.code.strow] [test.dma.er0]
#
# Don't mask anything (including ER0)
! 0x10003820 0x00000000
# 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
# 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
# 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
#
#
# ---- STCOL/COL + STOP/CONTINUE ---- [test.code.stcol] [test.stall.fbk] [test.stall.pfs]
#
# 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
#
# Try stopping using STP bit this time
# [test.stall.stp] [test.stall.wait] [test.stall.pss]
# 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
#
#
# ---- MSKPATH3 ---- [test.code.mskpath3]
#
# Set then clear MSKPATH3 on PKE1
1 0x06008000_00000000_06000000_00000000 0x00000000 PPPP
# XXX: test M3P register of GPUIF XXX
# 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
#
#
# ---- memory-mapped port reading ---- [test.mmap]
#
# 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
#
# 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
#
# Erroneously read/write words between registers
! 0x10003c14 0xffffffff
! 0x10003c18 0xffffffff
! 0x10003c1c 0xffffffff
! 0x10003874 0xffffffff
! 0x10003884 0xffffffff
! 0x100038fc 0xffffffff
#
#
# ---- 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]
#
# Load a bunch of NOP[e]/NOP instructions into the VU
# 0x000002ff_8000033c == NOP NOP
# 0x400002ff_8000033c == NOP[e] NOP
# MPG 10 instructions
1 0x4a0a0000_00000000_00000000_00000000 0x00000000 PPPP
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
1 0x10000000_14000000_00000000_00000000 0x00000000 PPPP
# Assert PEW bit on while waiting for VU
? 0x10003c00 0x00000004 0x00000004
# 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
#
#
# ---- 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
#
#
# ---- MPG/UNPACK address overflow tests ----
#
# RESET PKE0
! 0x10003810 0x00000001
# UNPACK to PKE0 near top of address range
# [test.unpack.V3_32] [test.code.stcycl] [test.unpack.endian] [test.unpack.unsigned]
# [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 ....
# Assert that all words were written correctly
? 0x11004ff0 0xccccccc0 0xffffffff
? 0x11004ff4 0x11111101 0xffffffff
? 0x11004ff8 0x22222022 0xffffffff
? 0x11004ffc 0x00000000 0xffffffff
? 0x210043fc 0x0000ff00 0xffffffff
? 0x11004000 0x33330333 0xffffffff
? 0x11004004 0x44404444 0xffffffff
? 0x11004008 0x55055555 0xffffffff
? 0x1100400c 0x00000000 0xffffffff
? 0x21004000 0x000ff000 0xffffffff
? 0x11004010 0x60666666 0xffffffff
? 0x11004014 0x07777777 0xffffffff
? 0x11004018 0x88888880 0xffffffff
? 0x1100401c 0x00000000 0xffffffff
? 0x21004004 0x00ff0000 0xffffffff
? 0x11004020 0x99999909 0xffffffff
? 0x11004024 0xaaaaa0aa 0xffffffff
? 0x11004028 0xbbbb0bbb 0xffffffff
? 0x1100402c 0x00000000 0xffffffff
? 0x21004008 0x00ff0000 0xffffffff
#
# 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...
# Assert that all words were written correctly
? 0x1100fff0 0xfffffff5 0xffffffff
? 0x1100fff4 0x0000000a 0xffffffff
? 0x1100fff8 0xfffffff5 0xffffffff
? 0x1100fffc 0x00000000 0xffffffff
? 0x2100cffc 0x000ff000 0xffffffff
? 0x1100c000 0x0000000a 0xffffffff
? 0x1100c004 0xfffffff5 0xffffffff
? 0x1100c008 0x0000000a 0xffffffff
? 0x1100c00c 0x00000001 0xffffffff
? 0x2100c000 0x000ff000 0xffffffff
? 0x1100c010 0x0000000f 0xffffffff
? 0x1100c014 0xfffffff7 0xffffffff
? 0x1100c018 0x0000000f 0xffffffff
? 0x1100c01c 0x00000001 0xffffffff
? 0x2100c004 0x000ff000 0xffffffff
? 0x1100c020 0x0000000d 0xffffffff
? 0x1100c024 0xfffffff5 0xffffffff
? 0x1100c028 0xfffffff7 0xffffffff
? 0x1100c02c 0x00000001 0xffffffff
? 0x2100c008 0x000ff000 0xffffffff
? 0x1100c030 0xfffffff9 0xffffffff
? 0x1100c034 0x0000000c 0xffffffff
? 0x1100c038 0x00000006 0xffffffff
? 0x1100c03c 0x00000001 0xffffffff
? 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