xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/frv/mqcpxrs.cgs (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1*4b169a6bSchristos# frv testcase for mqcpxrs $GRi,$GRj,$ACCk
2*4b169a6bSchristos# mach: all
3*4b169a6bSchristos
4*4b169a6bSchristos	.include "testutils.inc"
5*4b169a6bSchristos
6*4b169a6bSchristos	start
7*4b169a6bSchristos
8*4b169a6bSchristos	.global mqcpxrs
9*4b169a6bSchristosmqcpxrs:
10*4b169a6bSchristos	; Positive operands
11*4b169a6bSchristos	set_fr_iimmed  	2,4,fr8		; multiply small numbers
12*4b169a6bSchristos	set_fr_iimmed  	3,5,fr10
13*4b169a6bSchristos	set_fr_iimmed  	3,1,fr9		; multiply by 0
14*4b169a6bSchristos	set_fr_iimmed  	2,0,fr11
15*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
16*4b169a6bSchristos	test_accg_immed 	0xff,accg0
17*4b169a6bSchristos	test_acc_immed 	-14,acc0
18*4b169a6bSchristos	test_accg_immed 	0,accg1
19*4b169a6bSchristos	test_acc_immed 	6,acc1
20*4b169a6bSchristos
21*4b169a6bSchristos	set_fr_iimmed  	2,1,fr8		; multiply by 1
22*4b169a6bSchristos	set_fr_iimmed  	1,1,fr10
23*4b169a6bSchristos	set_fr_iimmed	0x3fff,2,fr9	; 15 bit result
24*4b169a6bSchristos	set_fr_iimmed  	2,0x0007,fr11
25*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
26*4b169a6bSchristos	test_accg_immed 	0,accg0
27*4b169a6bSchristos	test_acc_immed 	1,acc0
28*4b169a6bSchristos	test_accg_immed 	0,accg1
29*4b169a6bSchristos	test_acc_limmed	0,0x7ff0,acc1
30*4b169a6bSchristos
31*4b169a6bSchristos	set_fr_iimmed	0x4000,2,fr8	; 16 bit result
32*4b169a6bSchristos	set_fr_iimmed  	2,0x2000,fr10
33*4b169a6bSchristos	set_fr_iimmed	0x7fff,0x0000,fr9	; max positive result
34*4b169a6bSchristos	set_fr_iimmed	0x7fff,0x7fff,fr11
35*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
36*4b169a6bSchristos	test_accg_immed 	0,accg0
37*4b169a6bSchristos	test_acc_limmed	0x0000,0x4000,acc0
38*4b169a6bSchristos	test_accg_immed 	0,accg1
39*4b169a6bSchristos	test_acc_limmed 0x3fff,0x0001,acc1
40*4b169a6bSchristos
41*4b169a6bSchristos	; Mixed operands
42*4b169a6bSchristos	set_fr_iimmed  	2,0xfffd,fr8		; multiply small numbers
43*4b169a6bSchristos	set_fr_iimmed  	0xfffd,1,fr10
44*4b169a6bSchristos	set_fr_iimmed  	0xfffe,2,fr9		; multiply by 1
45*4b169a6bSchristos	set_fr_iimmed  	1,0xfffe,fr11
46*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
47*4b169a6bSchristos	test_accg_immed 	0xff,accg0
48*4b169a6bSchristos	test_acc_immed 	-3,acc0
49*4b169a6bSchristos	test_accg_immed 	0,accg1
50*4b169a6bSchristos	test_acc_immed 	2,acc1
51*4b169a6bSchristos
52*4b169a6bSchristos	set_fr_iimmed  	0xfffe,0,fr8		; multiply by 0
53*4b169a6bSchristos	set_fr_iimmed  	1,0xfffe,fr10
54*4b169a6bSchristos	set_fr_iimmed  	0x2001,0xfffe,fr9	; 15 bit result
55*4b169a6bSchristos	set_fr_iimmed  	0xfffe,0xfff9,fr11
56*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
57*4b169a6bSchristos	test_accg_immed 	0xff,accg0
58*4b169a6bSchristos	test_acc_immed 	-2,acc0
59*4b169a6bSchristos	test_accg_immed 	0xff,accg1
60*4b169a6bSchristos	test_acc_limmed	0xffff,0xbff0,acc1
61*4b169a6bSchristos
62*4b169a6bSchristos	set_fr_iimmed	0x4000,0xfffe,fr8	; 16 bit result
63*4b169a6bSchristos	set_fr_iimmed  	0xfffe,0x0003,fr10
64*4b169a6bSchristos	set_fr_iimmed	0x7fff,0x8000,fr9	; max negative result
65*4b169a6bSchristos	set_fr_iimmed	0x8000,0x8000,fr11
66*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
67*4b169a6bSchristos	test_accg_immed 	0xff,accg0
68*4b169a6bSchristos	test_acc_limmed	0xffff,0x8006,acc0
69*4b169a6bSchristos	test_accg_immed 	0xff,accg1
70*4b169a6bSchristos	test_acc_limmed	0x8000,0x8000,acc1
71*4b169a6bSchristos
72*4b169a6bSchristos	; Negative operands
73*4b169a6bSchristos	set_fr_iimmed	0x8000,0x7fff,fr8	; max positive result
74*4b169a6bSchristos	set_fr_iimmed	0x8000,0x8000,fr10
75*4b169a6bSchristos	set_fr_iimmed  	0xfffe,0xfffc,fr9		; multiply small numbers
76*4b169a6bSchristos	set_fr_iimmed  	0xfffd,0xfffb,fr11
77*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
78*4b169a6bSchristos	test_accg_immed 	0,accg0
79*4b169a6bSchristos	test_acc_limmed	0x7fff,0x8000,acc0
80*4b169a6bSchristos	test_accg_immed 	0xff,accg1
81*4b169a6bSchristos	test_acc_immed 	-14,acc1
82*4b169a6bSchristos
83*4b169a6bSchristos	set_fr_iimmed  	0xffff,0xffff,fr8		; multiply by -1
84*4b169a6bSchristos	set_fr_iimmed  	0xfffe,0xffff,fr10
85*4b169a6bSchristos	set_fr_iimmed	0x7fff,0x0000,fr9	; almost max positive result
86*4b169a6bSchristos	set_fr_iimmed	0x7fff,0x8001,fr11
87*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
88*4b169a6bSchristos	test_accg_immed 	0,accg0
89*4b169a6bSchristos	test_acc_immed 	1,acc0
90*4b169a6bSchristos	test_accg_immed 	0,accg1
91*4b169a6bSchristos	test_acc_immed 	0x3fff0001,acc1
92*4b169a6bSchristos
93*4b169a6bSchristos	set_fr_iimmed	0x8000,0x0000,fr8	; max positive result
94*4b169a6bSchristos	set_fr_iimmed	0x8000,0x8000,fr10
95*4b169a6bSchristos	set_fr_iimmed	0x8000,0x0000,fr9	; max positive result
96*4b169a6bSchristos	set_fr_iimmed	0x8000,0x8000,fr11
97*4b169a6bSchristos	mqcpxrs      	fr8,fr10,acc0
98*4b169a6bSchristos	test_accg_immed 	0,accg0
99*4b169a6bSchristos	test_acc_immed 	0x40000000,acc0
100*4b169a6bSchristos	test_accg_immed 	0,accg1
101*4b169a6bSchristos	test_acc_immed 	0x40000000,acc1
102*4b169a6bSchristos
103*4b169a6bSchristos	pass
104