# frv testcase for mdcutssi $ACC40i,$s6,$FRk
# mach: fr400 fr550

	.include "testutils.inc"

	start

	.global mdcutssi
mdcutssi:
	set_accg_immed   0xffffffe7,accg0
	set_acc_immed   0x89abcdef,acc0
	set_accg_immed   0xffffffe7,accg1
	set_acc_immed   0x89abcdef,acc1

	mdcutssi      	acc0,0,fr10
	test_fr_iimmed  0xe789abcd,fr10
	test_fr_iimmed  0xe789abcd,fr11

	mdcutssi      	acc0,1,fr10
	test_fr_iimmed  0xcf13579b,fr10
	test_fr_iimmed  0xcf13579b,fr11

	mdcutssi      	acc0,2,fr10
	test_fr_iimmed  0x9e26af37,fr10
	test_fr_iimmed  0x9e26af37,fr11

	mdcutssi      	acc0,3,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,4,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,5,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,6,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,7,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,8,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,9,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,10,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,11,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,12,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,13,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,14,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,15,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,16,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,17,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,18,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,19,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,20,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,21,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,22,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,23,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,24,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,25,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,26,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,27,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,28,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,29,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,30,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,31,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	mdcutssi      	acc0,-1,fr10
	test_fr_iimmed  0xf3c4d5e6,fr10
	test_fr_iimmed  0xf3c4d5e6,fr11

	mdcutssi      	acc0,-2,fr10
	test_fr_iimmed  0xf9e26af3,fr10
	test_fr_iimmed  0xf9e26af3,fr11

	mdcutssi      	acc0,-3,fr10
	test_fr_iimmed  0xfcf13579,fr10
	test_fr_iimmed  0xfcf13579,fr11

	mdcutssi      	acc0,-4,fr10
	test_fr_iimmed  0xfe789abc,fr10
	test_fr_iimmed  0xfe789abc,fr11

	mdcutssi      	acc0,-5,fr10
	test_fr_iimmed  0xff3c4d5e,fr10
	test_fr_iimmed  0xff3c4d5e,fr11

	mdcutssi      	acc0,-6,fr10
	test_fr_iimmed  0xff9e26af,fr10
	test_fr_iimmed  0xff9e26af,fr11

	mdcutssi      	acc0,-7,fr10
	test_fr_iimmed  0xffcf1357,fr10
	test_fr_iimmed  0xffcf1357,fr11

	mdcutssi      	acc0,-8,fr10
	test_fr_iimmed  0xffe789ab,fr10
	test_fr_iimmed  0xffe789ab,fr11

	mdcutssi      	acc0,-9,fr10
	test_fr_iimmed  0xfff3c4d5,fr10
	test_fr_iimmed  0xfff3c4d5,fr11

	mdcutssi      	acc0,-10,fr10
	test_fr_iimmed  0xfff9e26a,fr10
	test_fr_iimmed  0xfff9e26a,fr11

	mdcutssi      	acc0,-11,fr10
	test_fr_iimmed  0xfffcf135,fr10
	test_fr_iimmed  0xfffcf135,fr11

	mdcutssi      	acc0,-12,fr10
	test_fr_iimmed  0xfffe789a,fr10
	test_fr_iimmed  0xfffe789a,fr11

	mdcutssi      	acc0,-13,fr10
	test_fr_iimmed  0xffff3c4d,fr10
	test_fr_iimmed  0xffff3c4d,fr11

	mdcutssi      	acc0,-14,fr10
	test_fr_iimmed  0xffff9e26,fr10
	test_fr_iimmed  0xffff9e26,fr11

	mdcutssi      	acc0,-15,fr10
	test_fr_iimmed  0xffffcf13,fr10
	test_fr_iimmed  0xffffcf13,fr11

	mdcutssi      	acc0,-16,fr10
	test_fr_iimmed  0xffffe789,fr10
	test_fr_iimmed  0xffffe789,fr11

	mdcutssi      	acc0,-17,fr10
	test_fr_iimmed  0xfffff3c4,fr10
	test_fr_iimmed  0xfffff3c4,fr11

	mdcutssi      	acc0,-18,fr10
	test_fr_iimmed  0xfffff9e2,fr10
	test_fr_iimmed  0xfffff9e2,fr11

	mdcutssi      	acc0,-19,fr10
	test_fr_iimmed  0xfffffcf1,fr10
	test_fr_iimmed  0xfffffcf1,fr11

	mdcutssi      	acc0,-20,fr10
	test_fr_iimmed  0xfffffe78,fr10
	test_fr_iimmed  0xfffffe78,fr11

	mdcutssi      	acc0,-21,fr10
	test_fr_iimmed  0xffffff3c,fr10
	test_fr_iimmed  0xffffff3c,fr11

	mdcutssi      	acc0,-22,fr10
	test_fr_iimmed  0xffffff9e,fr10
	test_fr_iimmed  0xffffff9e,fr11

	mdcutssi      	acc0,-23,fr10
	test_fr_iimmed  0xffffffcf,fr10
	test_fr_iimmed  0xffffffcf,fr11

	mdcutssi      	acc0,-24,fr10
	test_fr_iimmed  0xffffffe7,fr10
	test_fr_iimmed  0xffffffe7,fr11

	mdcutssi      	acc0,-25,fr10
	test_fr_iimmed  0xfffffff3,fr10
	test_fr_iimmed  0xfffffff3,fr11

	mdcutssi      	acc0,-26,fr10
	test_fr_iimmed  0xfffffff9,fr10
	test_fr_iimmed  0xfffffff9,fr11

	mdcutssi      	acc0,-27,fr10
	test_fr_iimmed  0xfffffffc,fr10
	test_fr_iimmed  0xfffffffc,fr11

	mdcutssi      	acc0,-28,fr10
	test_fr_iimmed  0xfffffffe,fr10
	test_fr_iimmed  0xfffffffe,fr11

	mdcutssi      	acc0,-29,fr10
	test_fr_iimmed  0xffffffff,fr10
	test_fr_iimmed  0xffffffff,fr11

	mdcutssi      	acc0,-30,fr10
	test_fr_iimmed  0xffffffff,fr10
	test_fr_iimmed  0xffffffff,fr11

	mdcutssi      	acc0,-31,fr10
	test_fr_iimmed  0xffffffff,fr10
	test_fr_iimmed  0xffffffff,fr11

	mdcutssi      	acc0,-32,fr10
	test_fr_iimmed  0xffffffff,fr10
	test_fr_iimmed  0xffffffff,fr11

	set_accg_immed   0xffffff67,accg0
	set_acc_immed   0x89abcdef,acc0
	set_accg_immed   0xffffff67,accg1
	set_acc_immed   0x89abcdef,acc1

	mdcutssi      	acc0,-1,fr10
	test_fr_iimmed  0x33c4d5e6,fr10
	test_fr_iimmed  0x33c4d5e6,fr11

	mdcutssi      	acc0,-2,fr10
	test_fr_iimmed  0x19e26af3,fr10
	test_fr_iimmed  0x19e26af3,fr11

	mdcutssi      	acc0,-3,fr10
	test_fr_iimmed  0x0cf13579,fr10
	test_fr_iimmed  0x0cf13579,fr11

	mdcutssi      	acc0,-4,fr10
	test_fr_iimmed  0x06789abc,fr10
	test_fr_iimmed  0x06789abc,fr11

	mdcutssi      	acc0,-5,fr10
	test_fr_iimmed  0x033c4d5e,fr10
	test_fr_iimmed  0x033c4d5e,fr11

	mdcutssi      	acc0,-6,fr10
	test_fr_iimmed  0x019e26af,fr10
	test_fr_iimmed  0x019e26af,fr11

	mdcutssi      	acc0,-7,fr10
	test_fr_iimmed  0x00cf1357,fr10
	test_fr_iimmed  0x00cf1357,fr11

	mdcutssi      	acc0,-8,fr10
	test_fr_iimmed  0x006789ab,fr10
	test_fr_iimmed  0x006789ab,fr11

	mdcutssi      	acc0,-9,fr10
	test_fr_iimmed  0x0033c4d5,fr10
	test_fr_iimmed  0x0033c4d5,fr11

	mdcutssi      	acc0,-10,fr10
	test_fr_iimmed  0x0019e26a,fr10
	test_fr_iimmed  0x0019e26a,fr11

	mdcutssi      	acc0,-11,fr10
	test_fr_iimmed  0x000cf135,fr10
	test_fr_iimmed  0x000cf135,fr11

	mdcutssi      	acc0,-12,fr10
	test_fr_iimmed  0x0006789a,fr10
	test_fr_iimmed  0x0006789a,fr11

	mdcutssi      	acc0,-13,fr10
	test_fr_iimmed  0x00033c4d,fr10
	test_fr_iimmed  0x00033c4d,fr11

	mdcutssi      	acc0,-14,fr10
	test_fr_iimmed  0x00019e26,fr10
	test_fr_iimmed  0x00019e26,fr11

	mdcutssi      	acc0,-15,fr10
	test_fr_iimmed  0x0000cf13,fr10
	test_fr_iimmed  0x0000cf13,fr11

	mdcutssi      	acc0,-16,fr10
	test_fr_iimmed  0x00006789,fr10
	test_fr_iimmed  0x00006789,fr11

	mdcutssi      	acc0,-17,fr10
	test_fr_iimmed  0x000033c4,fr10
	test_fr_iimmed  0x000033c4,fr11

	mdcutssi      	acc0,-18,fr10
	test_fr_iimmed  0x000019e2,fr10
	test_fr_iimmed  0x000019e2,fr11

	mdcutssi      	acc0,-19,fr10
	test_fr_iimmed  0x00000cf1,fr10
	test_fr_iimmed  0x00000cf1,fr11

	mdcutssi      	acc0,-20,fr10
	test_fr_iimmed  0x00000678,fr10
	test_fr_iimmed  0x00000678,fr11

	mdcutssi      	acc0,-21,fr10
	test_fr_iimmed  0x0000033c,fr10
	test_fr_iimmed  0x0000033c,fr11

	mdcutssi      	acc0,-22,fr10
	test_fr_iimmed  0x0000019e,fr10
	test_fr_iimmed  0x0000019e,fr11

	mdcutssi      	acc0,-23,fr10
	test_fr_iimmed  0x000000cf,fr10
	test_fr_iimmed  0x000000cf,fr11

	mdcutssi      	acc0,-24,fr10
	test_fr_iimmed  0x00000067,fr10
	test_fr_iimmed  0x00000067,fr11

	mdcutssi      	acc0,-25,fr10
	test_fr_iimmed  0x00000033,fr10
	test_fr_iimmed  0x00000033,fr11

	mdcutssi      	acc0,-26,fr10
	test_fr_iimmed  0x00000019,fr10
	test_fr_iimmed  0x00000019,fr11

	mdcutssi      	acc0,-27,fr10
	test_fr_iimmed  0x0000000c,fr10
	test_fr_iimmed  0x0000000c,fr11

	mdcutssi      	acc0,-28,fr10
	test_fr_iimmed  0x00000006,fr10
	test_fr_iimmed  0x00000006,fr11

	mdcutssi      	acc0,-29,fr10
	test_fr_iimmed  0x00000003,fr10
	test_fr_iimmed  0x00000003,fr11

	mdcutssi      	acc0,-30,fr10
	test_fr_iimmed  0x00000001,fr10
	test_fr_iimmed  0x00000001,fr11

	mdcutssi      	acc0,-31,fr10
	test_fr_iimmed  0x00000000,fr10
	test_fr_iimmed  0x00000000,fr11

	mdcutssi      	acc0,-32,fr10
	test_fr_iimmed  0x00000000,fr10
	test_fr_iimmed  0x00000000,fr11

	; Examples from the customer
	set_accg_immed   0xffffffff,accg0
	set_acc_immed   0xffe00000,acc0
	set_accg_immed   0xffffffff,accg1
	set_acc_immed   0xffe00000,acc1

	mdcutssi    	acc0,16,fr10
	test_fr_iimmed  0xe0000000,fr10
	test_fr_iimmed  0xe0000000,fr11

	mdcutssi    	acc0,17,fr10
	test_fr_iimmed  0xc0000000,fr10
	test_fr_iimmed  0xc0000000,fr11

	mdcutssi    	acc0,18,fr10
	test_fr_iimmed  0x80000000,fr10
	test_fr_iimmed  0x80000000,fr11

	set_accg_immed   0,accg0
	set_acc_immed   0x003fffff,acc0
	set_accg_immed   0,accg1
	set_acc_immed   0x003fffff,acc1

	mdcutssi    	acc0,16,fr10
	test_fr_iimmed  0x3fffff00,fr10
	test_fr_iimmed  0x3fffff00,fr11

	mdcutssi    	acc0,17,fr10
	test_fr_iimmed  0x7ffffe00,fr10
	test_fr_iimmed  0x7ffffe00,fr11

	set_accg_immed   0x7f,accg0
	set_acc_immed   0xffe00000,acc0
	set_accg_immed   0x7f,accg1
	set_acc_immed   0xffe00000,acc1

	mdcutssi    	acc0,16,fr10
	test_fr_iimmed  0x7fffffff,fr10		; saturated
	test_fr_iimmed  0x7fffffff,fr11		; saturated

	mdcutssi    	acc0,17,fr10
	test_fr_iimmed  0x7fffffff,fr10		; saturated
	test_fr_iimmed  0x7fffffff,fr11		; saturated

	mdcutssi    	acc0,18,fr10
	test_fr_iimmed  0x7fffffff,fr10		; saturated
	test_fr_iimmed  0x7fffffff,fr11		; saturated

	set_accg_immed   0x08,accg0
	set_acc_immed   0x003fffff,acc0
	set_accg_immed   0x08,accg1
	set_acc_immed   0x003fffff,acc1

	mdcutssi    	acc0,16,fr10
	test_fr_iimmed  0x7fffffff,fr10		; saturated
	test_fr_iimmed  0x7fffffff,fr11		; saturated

	mdcutssi    	acc0,17,fr10
	test_fr_iimmed  0x7fffffff,fr10		; saturated
	test_fr_iimmed  0x7fffffff,fr11		; saturated

	set_accg_immed   0xff,accg0
	set_acc_immed   0xefe00000,acc0
	set_accg_immed   0xff,accg1
	set_acc_immed   0xefe00000,acc1

	mdcutssi    	acc0,16,fr10
	test_fr_iimmed  0x80000000,fr10		; saturated
	test_fr_iimmed  0x80000000,fr11		; saturated

	mdcutssi    	acc0,17,fr10
	test_fr_iimmed  0x80000000,fr10		; saturated
	test_fr_iimmed  0x80000000,fr11		; saturated

	mdcutssi    	acc0,18,fr10
	test_fr_iimmed  0x80000000,fr10		; saturated
	test_fr_iimmed  0x80000000,fr11		; saturated

	set_accg_immed   0x80,accg0
	set_acc_immed   0x003fffff,acc0
	set_accg_immed   0x80,accg1
	set_acc_immed   0x003fffff,acc1

	mdcutssi    	acc0,16,fr10
	test_fr_iimmed  0x80000000,fr10		; saturated
	test_fr_iimmed  0x80000000,fr11		; saturated

	mdcutssi    	acc0,17,fr10
	test_fr_iimmed  0x80000000,fr10		; saturated
	test_fr_iimmed  0x80000000,fr11		; saturated

	set_accg_immed   0xffffffaf,accg0
	set_acc_immed   0x5a5a5a5a,acc0
	set_accg_immed   0xffffffaf,accg1
	set_acc_immed   0x5a5a5a5a,acc1

	mdcutssi    	acc0,-4,fr10
	test_fr_iimmed  0xfaf5a5a5,fr10
	test_fr_iimmed  0xfaf5a5a5,fr11

	set_accg_immed   0x0000002f,accg0
	set_acc_immed   0x5a5a5a5a,acc0
	set_accg_immed   0x0000002f,accg1
	set_acc_immed   0x5a5a5a5a,acc1

	mdcutssi    	acc0,-7,fr10
	test_fr_iimmed  0x005eb4b4,fr10
	test_fr_iimmed  0x005eb4b4,fr11

	pass
