# frv testcase for cscan $GRi,$GRj,$GRk,$CCi,$cond
# mach: all

	.include "testutils.inc"

	start

	.global cscan
cscan:
	set_spr_immed	0x1b1b,cccr

	set_gr_limmed	0x2aaa,0xaaaa,gr7
	set_gr_limmed	0xaaaa,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc0,1
	test_gr_immed	0,gr9
	test_gr_limmed	0x2aaa,0xaaaa,gr7
	test_gr_limmed	0xaaaa,0x5555,gr8

	set_gr_limmed	0x2aaa,0xaaaa,gr7
	set_gr_limmed	0xaaaa,0xaaab,gr8
	cscan 		gr7,gr8,gr9,cc0,1
	test_gr_immed	0,gr9
	test_gr_limmed	0x2aaa,0xaaaa,gr7
	test_gr_limmed	0xaaaa,0xaaab,gr8

	set_gr_limmed	0xd555,0x5555,gr7
	set_gr_limmed	0xaaaa,0xaaaa,gr8
	cscan 		gr7,gr8,gr9,cc0,1
	test_gr_immed	63,gr9
	test_gr_limmed	0xd555,0x5555,gr7
	test_gr_limmed	0xaaaa,0xaaaa,gr8

	set_gr_limmed	0xd555,0x5555,gr7
	set_gr_limmed	0xaaaa,0xaaab,gr8
	cscan 		gr7,gr8,gr9,cc0,1
	test_gr_immed	63,gr9
	test_gr_limmed	0xd555,0x5555,gr7
	test_gr_limmed	0xaaaa,0xaaab,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0x7fff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc0,1
	test_gr_immed	0,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0x7fff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xbfff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc4,1
	test_gr_immed	2,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xbfff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xfffe,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc4,1
	test_gr_immed	16,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xfffe,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xffff,0xfffd,gr8
	cscan 		gr7,gr8,gr9,cc4,1
	test_gr_immed	31,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xffff,0xfffd,gr8

	set_gr_limmed	0xdead,0xbeef,gr7
	set_gr_limmed	0xbeef,0xdead,gr8
	cscan 		gr7,gr8,gr9,cc4,1
	test_gr_immed	7,gr9
	test_gr_limmed	0xdead,0xbeef,gr7
	test_gr_limmed	0xbeef,0xdead,gr8

	set_gr_immed	0x7fff,gr9
	set_gr_limmed	0xaaaa,0xaaaa,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc0,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xaaaa,0xaaaa,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0xaaaa,0xaaab,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc0,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xaaaa,0xaaab,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0x5555,0x5555,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc0,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0x5555,0x5555,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0x5555,0x5555,gr7
	set_gr_limmed	0x5555,0x5554,gr8
	cscan 		gr7,gr8,gr9,cc0,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0x5555,0x5555,gr7
	test_gr_limmed	0x5555,0x5554,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0x7fff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc0,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0x7fff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xbfff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc4,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xbfff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xfffe,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc4,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xfffe,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xffff,0xfffd,gr8
	cscan 		gr7,gr8,gr9,cc4,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xffff,0xfffd,gr8

	set_gr_limmed	0xdead,0xbeef,gr7
	set_gr_limmed	0xbeef,0xdead,gr8
	cscan 		gr7,gr8,gr9,cc4,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xdead,0xbeef,gr7
	test_gr_limmed	0xbeef,0xdead,gr8

	set_gr_limmed	0x2aaa,0xaaaa,gr7
	set_gr_limmed	0xaaaa,0xaaaa,gr8
	cscan 		gr7,gr8,gr9,cc1,0
	test_gr_immed	0,gr9
	test_gr_limmed	0x2aaa,0xaaaa,gr7
	test_gr_limmed	0xaaaa,0xaaaa,gr8

	set_gr_limmed	0x2aaa,0xaaaa,gr7
	set_gr_limmed	0xaaaa,0xaaab,gr8
	cscan 		gr7,gr8,gr9,cc1,0
	test_gr_immed	0,gr9
	test_gr_limmed	0x2aaa,0xaaaa,gr7
	test_gr_limmed	0xaaaa,0xaaab,gr8

	set_gr_limmed	0xd555,0x5555,gr7
	set_gr_limmed	0xaaaa,0xaaaa,gr8
	cscan 		gr7,gr8,gr9,cc1,0
	test_gr_immed	63,gr9
	test_gr_limmed	0xd555,0x5555,gr7
	test_gr_limmed	0xaaaa,0xaaaa,gr8

	set_gr_limmed	0xd555,0x5555,gr7
	set_gr_limmed	0xaaaa,0xaaab,gr8
	cscan 		gr7,gr8,gr9,cc1,0
	test_gr_immed	63,gr9
	test_gr_limmed	0xd555,0x5555,gr7
	test_gr_limmed	0xaaaa,0xaaab,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0x7fff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc1,0
	test_gr_immed	0,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0x7fff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xbfff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc5,0
	test_gr_immed	2,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xbfff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xfffe,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc5,0
	test_gr_immed	16,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xfffe,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xffff,0xfffd,gr8
	cscan 		gr7,gr8,gr9,cc5,0
	test_gr_immed	31,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xffff,0xfffd,gr8

	set_gr_limmed	0xdead,0xbeef,gr7
	set_gr_limmed	0xbeef,0xdead,gr8
	cscan 		gr7,gr8,gr9,cc5,0
	test_gr_immed	7,gr9
	test_gr_limmed	0xdead,0xbeef,gr7
	test_gr_limmed	0xbeef,0xdead,gr8

	set_gr_immed	0x7fff,gr9
	set_gr_limmed	0xaaaa,0xaaaa,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc1,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xaaaa,0xaaaa,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0xaaaa,0xaaab,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc1,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xaaaa,0xaaab,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0x5555,0x5555,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc1,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0x5555,0x5555,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0x5555,0x5555,gr7
	set_gr_limmed	0x5555,0x5554,gr8
	cscan 		gr7,gr8,gr9,cc1,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0x5555,0x5555,gr7
	test_gr_limmed	0x5555,0x5554,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0x7fff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc1,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0x7fff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xbfff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc5,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xbfff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xfffe,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc5,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xfffe,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xffff,0xfffd,gr8
	cscan 		gr7,gr8,gr9,cc5,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xffff,0xfffd,gr8

	set_gr_limmed	0xdead,0xbeef,gr7
	set_gr_limmed	0xbeef,0xdead,gr8
	cscan 		gr7,gr8,gr9,cc5,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xdead,0xbeef,gr7
	test_gr_limmed	0xbeef,0xdead,gr8

	set_gr_immed	0x7fff,gr9
	set_gr_limmed	0xaaaa,0xaaaa,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc2,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xaaaa,0xaaaa,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0xaaaa,0xaaab,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc2,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xaaaa,0xaaab,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0x5555,0x5555,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc2,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0x5555,0x5555,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0x5555,0x5555,gr7
	set_gr_limmed	0x5555,0x5554,gr8
	cscan 		gr7,gr8,gr9,cc2,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0x5555,0x5555,gr7
	test_gr_limmed	0x5555,0x5554,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0x7fff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc2,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0x7fff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xbfff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc6,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xbfff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xfffe,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc6,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xfffe,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xffff,0xfffd,gr8
	cscan 		gr7,gr8,gr9,cc6,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xffff,0xfffd,gr8

	set_gr_limmed	0xdead,0xbeef,gr7
	set_gr_limmed	0xbeef,0xdead,gr8
	cscan 		gr7,gr8,gr9,cc6,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xdead,0xbeef,gr7
	test_gr_limmed	0xbeef,0xdead,gr8

	set_gr_immed	0x7fff,gr9
	set_gr_limmed	0xaaaa,0xaaaa,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc3,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xaaaa,0xaaaa,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0xaaaa,0xaaab,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc3,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xaaaa,0xaaab,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0x5555,0x5555,gr7
	set_gr_limmed	0x5555,0x5555,gr8
	cscan 		gr7,gr8,gr9,cc3,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0x5555,0x5555,gr7
	test_gr_limmed	0x5555,0x5555,gr8

	set_gr_limmed	0x5555,0x5555,gr7
	set_gr_limmed	0x5555,0x5554,gr8
	cscan 		gr7,gr8,gr9,cc3,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0x5555,0x5555,gr7
	test_gr_limmed	0x5555,0x5554,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0x7fff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc3,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0x7fff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xbfff,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc7,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xbfff,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xfffe,0xffff,gr8
	cscan 		gr7,gr8,gr9,cc7,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xfffe,0xffff,gr8

	set_gr_limmed	0xffff,0xffff,gr7
	set_gr_limmed	0xffff,0xfffd,gr8
	cscan 		gr7,gr8,gr9,cc7,0
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xffff,0xffff,gr7
	test_gr_limmed	0xffff,0xfffd,gr8

	set_gr_limmed	0xdead,0xbeef,gr7
	set_gr_limmed	0xbeef,0xdead,gr8
	cscan 		gr7,gr8,gr9,cc7,1
	test_gr_immed	0x7fff,gr9
	test_gr_limmed	0xdead,0xbeef,gr7
	test_gr_limmed	0xbeef,0xdead,gr8

	pass
