1//  Test ALU  SEARCH instruction
2# mach: bfin
3
4.include "testutils.inc"
5	start
6
7
8	init_r_regs 0;
9	ASTAT = R0;
10
11	R0 = 4;
12	R1 = 5;
13	A1 = A0 = 0;
14
15	R2.L = 0x0001;
16	R2.H = 0xffff;
17
18	loadsym P0, foo;
19
20	( R1 , R0 ) = SEARCH R2 (GT);
21
22	// R0 should be the pointer
23	R7 = P0;
24	CC = R0 == R7;
25	if !CC JUMP _fail;
26
27	_DBG R1;	// does not change
28	DBGA ( R1.H , 0 );	DBGA ( R1.L , 0x5 );
29
30	_DBG A0;	// changes
31	R0 = A0.w;
32	DBGA ( R0.H , 0 );	DBGA ( R0.L , 0x1 );
33
34	_DBG A1;	// does not change
35	R0 = A1.w;
36	DBGA ( R0.H , 0 );	DBGA ( R0.L , 0 );
37
38	R0 = 4;
39	R1 = 5;
40	A1 = A0 = 0;
41
42	R2.L = 0x0000;
43	R2.H = 0xffff;
44
45	loadsym p0, foo;
46
47	( R1 , R0 ) = SEARCH R2 (LT);
48
49	_DBG R0;	// no change
50	DBGA ( R0.H , 0 );	DBGA ( R0.L , 4 );
51
52	_DBG R1;	// change
53	R7 = P0;
54	CC = R1 == R7;
55	if !CC JUMP _fail;
56
57	_DBG A0;
58	R0 = A0.w;
59	DBGA ( R0.H , 0 );	DBGA ( R0.L , 0 );
60
61	_DBG A1;
62	R0 = A1.w;
63	DBGA ( R0.H , 0xffff );	DBGA ( R0.L , 0xffff );
64
65	pass
66
67_fail:
68	fail;
69
70	.data
71foo:
72	.space (0x100)
73