xref: /netbsd-src/external/gpl3/gdb/dist/sim/testsuite/frv/umulicc.cgs (revision 4b169a6ba595ae283ca507b26b15fdff40495b1c)
1*4b169a6bSchristos# frv testcase for umulicc $GRi,$GRj,$GRk
2*4b169a6bSchristos# mach: all
3*4b169a6bSchristos
4*4b169a6bSchristos	.include "testutils.inc"
5*4b169a6bSchristos
6*4b169a6bSchristos	start
7*4b169a6bSchristos
8*4b169a6bSchristos	.global umulicc
9*4b169a6bSchristosumulicc:
10*4b169a6bSchristos	set_gr_immed   	3,gr7		; multiply small numbers
11*4b169a6bSchristos	set_icc         0x0f,0		; Set mask opposite of expected
12*4b169a6bSchristos	umulicc      	gr7,2,gr8,icc0
13*4b169a6bSchristos	test_icc	0 0 1 1 icc0
14*4b169a6bSchristos	test_gr_immed  	0,gr8
15*4b169a6bSchristos	test_gr_immed  	6,gr9
16*4b169a6bSchristos
17*4b169a6bSchristos	set_gr_immed   	1,gr7		; multiply by 1
18*4b169a6bSchristos	set_icc         0x0e,0		; Set mask opposite of expected
19*4b169a6bSchristos	umulicc      	gr7,2,gr8,icc0
20*4b169a6bSchristos	test_icc	0 0 1 0 icc0
21*4b169a6bSchristos	test_gr_immed  	0,gr8
22*4b169a6bSchristos	test_gr_immed  	2,gr9
23*4b169a6bSchristos
24*4b169a6bSchristos	set_gr_immed   	2,gr7		; multiply by 1
25*4b169a6bSchristos	set_icc         0x0f,0		; Set mask opposite of expected
26*4b169a6bSchristos	umulicc      	gr7,1,gr8,icc0
27*4b169a6bSchristos	test_icc	0 0 1 1 icc0
28*4b169a6bSchristos	test_gr_immed  	0,gr8
29*4b169a6bSchristos	test_gr_immed  	2,gr9
30*4b169a6bSchristos
31*4b169a6bSchristos	set_gr_immed   	0,gr7		; multiply by 0
32*4b169a6bSchristos	set_icc         0x0b,0		; Set mask opposite of expected
33*4b169a6bSchristos	umulicc      	gr7,2,gr8,icc0
34*4b169a6bSchristos	test_icc	0 1 1 1 icc0
35*4b169a6bSchristos	test_gr_immed  	0,gr8
36*4b169a6bSchristos	test_gr_immed  	0,gr9
37*4b169a6bSchristos
38*4b169a6bSchristos	set_gr_immed   	2,gr7		; multiply by 0
39*4b169a6bSchristos	set_icc         0x0a,0		; Set mask opposite of expected
40*4b169a6bSchristos	umulicc      	gr7,0,gr8,icc0
41*4b169a6bSchristos	test_icc	0 1 1 0 icc0
42*4b169a6bSchristos	test_gr_immed  	0,gr8
43*4b169a6bSchristos	test_gr_immed  	0,gr9
44*4b169a6bSchristos
45*4b169a6bSchristos	set_gr_limmed 	0x3fff,0xffff,gr7	; 31 bit result
46*4b169a6bSchristos	set_icc         0x0f,0		; Set mask opposite of expected
47*4b169a6bSchristos	umulicc      	gr7,2,gr8,icc0
48*4b169a6bSchristos	test_icc	0 0 1 1 icc0
49*4b169a6bSchristos	test_gr_immed  	0,gr8
50*4b169a6bSchristos	test_gr_limmed 	0x7fff,0xfffe,gr9
51*4b169a6bSchristos
52*4b169a6bSchristos	set_gr_limmed  	0x4000,0x0000,gr7	; 32 bit result
53*4b169a6bSchristos	set_icc         0x0e,0		; Set mask opposite of expected
54*4b169a6bSchristos	umulicc      	gr7,2,gr8,icc0
55*4b169a6bSchristos	test_icc	0 0 1 0 icc0
56*4b169a6bSchristos	test_gr_immed  	0,gr8
57*4b169a6bSchristos	test_gr_limmed 	0x8000,0x0000,gr9
58*4b169a6bSchristos
59*4b169a6bSchristos	set_gr_limmed  	0x8000,0x0000,gr7	; 33 bit result
60*4b169a6bSchristos	set_icc         0x09,0		; Set mask opposite of expected
61*4b169a6bSchristos	umulicc      	gr7,2,gr8,icc0
62*4b169a6bSchristos	test_icc	0 0 0 1 icc0
63*4b169a6bSchristos	test_gr_immed  	1,gr8
64*4b169a6bSchristos	test_gr_immed  	0x00000000,gr9
65*4b169a6bSchristos
66*4b169a6bSchristos	set_gr_limmed  	0x7fff,0xffff,gr7	; max positive result
67*4b169a6bSchristos	set_icc         0x0d,0		; Set mask opposite of expected
68*4b169a6bSchristos	umulicc      	gr7,0x1ff,gr8,icc0
69*4b169a6bSchristos	test_icc	0 0 0 1 icc0
70*4b169a6bSchristos	test_gr_immed 	0xff,gr8
71*4b169a6bSchristos	test_gr_limmed 	0x7fff,0xfe01,gr9
72*4b169a6bSchristos
73*4b169a6bSchristos	set_gr_limmed  	0x8000,0x0000,gr7	; max positive result
74*4b169a6bSchristos	set_icc         0x09,0		; Set mask opposite of expected
75*4b169a6bSchristos	umulicc      	gr7,-512,gr8,icc0
76*4b169a6bSchristos	test_icc	0 0 0 1 icc0
77*4b169a6bSchristos	test_gr_limmed 	0x7fff,0xff00,gr8
78*4b169a6bSchristos	test_gr_limmed  0x0000,0x0000,gr9
79*4b169a6bSchristos
80*4b169a6bSchristos	set_gr_limmed  	0xffff,0xffff,gr7	; max positive result
81*4b169a6bSchristos	set_icc         0x05,0		; Set mask opposite of expected
82*4b169a6bSchristos	umulicc      	gr7,-1,gr8,icc0
83*4b169a6bSchristos	test_icc	1 0 0 1 icc0
84*4b169a6bSchristos	test_gr_limmed 	0xffff,0xfffe,gr8
85*4b169a6bSchristos	test_gr_immed  	1,gr9
86*4b169a6bSchristos
87*4b169a6bSchristos	pass
88