1# frv testcase for umul $GRi,$GRj,$GRk
2# mach: all
3
4	.include "testutils.inc"
5
6	start
7
8	.global umul
9umul:
10	set_gr_immed   	3,gr7		; multiply small numbers
11	set_gr_immed   	2,gr8
12	umul      	gr7,gr8,gr8
13	test_gr_immed  	0,gr8
14	test_gr_immed  	6,gr9
15
16	set_gr_immed   	1,gr7		; multiply by 1
17	set_gr_immed   	2,gr8
18	umul      	gr7,gr8,gr8
19	test_gr_immed  	0,gr8
20	test_gr_immed  	2,gr9
21
22	set_gr_immed   	2,gr7		; multiply by 1
23	set_gr_immed   	1,gr8
24	umul      	gr7,gr8,gr8
25	test_gr_immed  	0,gr8
26	test_gr_immed  	2,gr9
27
28	set_gr_immed   	0,gr7		; multiply by 0
29	set_gr_immed   	2,gr8
30	umul      	gr7,gr8,gr8
31	test_gr_immed  	0,gr8
32	test_gr_immed  	0,gr9
33
34	set_gr_immed   	2,gr7		; multiply by 0
35	set_gr_immed   	0,gr8
36	umul      	gr7,gr8,gr8
37	test_gr_immed  	0,gr8
38	test_gr_immed  	0,gr9
39
40	set_gr_limmed 	0x3fff,0xffff,gr7	; 31 bit result
41	set_gr_immed   	2,gr8
42	umul      	gr7,gr8,gr8
43	test_gr_immed  	0,gr8
44	test_gr_limmed 	0x7fff,0xfffe,gr9
45
46	set_gr_limmed  	0x4000,0x0000,gr7	; 32 bit result
47	set_gr_immed   	2,gr8
48	umul      	gr7,gr8,gr8
49	test_gr_immed  	0,gr8
50	test_gr_limmed 	0x8000,0x0000,gr9
51
52	set_gr_limmed  	0x8000,0x0000,gr7	; 33 bit result
53	set_gr_immed   	2,gr8
54	umul      	gr7,gr8,gr8
55	test_gr_immed  	1,gr8
56	test_gr_immed  	0x00000000,gr9
57
58	set_gr_limmed  	0x7fff,0xffff,gr7	; max positive result
59	set_gr_limmed  	0x7fff,0xffff,gr8
60	umul      	gr7,gr8,gr8
61	test_gr_limmed 	0x3fff,0xffff,gr8
62	test_gr_immed  	0x00000001,gr9
63
64	set_gr_limmed  	0x8000,0x0000,gr7	; max positive result
65	set_gr_limmed  	0x8000,0x0000,gr8
66	umul      	gr7,gr8,gr8
67	test_gr_limmed 	0x4000,0x0000,gr8
68	test_gr_immed  	0,gr9
69
70	set_gr_limmed  	0xffff,0xffff,gr7	; max positive result
71	set_gr_limmed  	0xffff,0xffff,gr8
72	umul      	gr7,gr8,gr8
73	test_gr_limmed 	0xffff,0xfffe,gr8
74	test_gr_immed  	1,gr9
75
76	pass
77